Age | Commit message (Collapse) | Author |
|
* rickard/garbage_collect/OTP-11388:
Parallel check_process_code when code_server purge a module
Functionality for disabling garbage collection
Use asynchronous check_process_code in code_parallel_SUITE
Execution of system tasks in context of another process
Conflicts:
bootstrap/lib/kernel/ebin/hipe_unified_loader.beam
erts/preloaded/ebin/erlang.beam
erts/preloaded/ebin/erts_internal.beam
|
|
|
|
|
|
The test needs to be false to fail, not true. This was noticed with the
following warning, where marking erl_assert_error as non-returning didn't
help:
beam/erl_gc.c:2772:2: warning: variable 'refc' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized]
default:
^~~~~~~
beam/erl_gc.c:2775:26: note: uninitialized use occurs here
ERTS_CHK_OFFHEAP_ASSERT(refc >= 1);
^~~~
beam/erl_gc.c:2738:11: note: expanded from macro 'ERTS_CHK_OFFHEAP_ASSERT'
if (!(EXP)) \
^
beam/erl_gc.c:2759:18: note: initialize the variable 'refc' to silence this warning
erts_aint_t refc;
^
= 0
|
|
|
|
When the offending code is reached, new_crr is either uninitalized or
have been set to NULL. This patch removes the following warning:
beam/erl_alloc_util.c:3510:6: warning: variable 'new_crr' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (!(flags & CFLG_FORCE_MSEG)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~
beam/erl_alloc_util.c:3567:23: note: uninitialized use occurs here
DEBUG_SAVE_ALIGNMENT(new_crr);
^~~~~~~
beam/erl_alloc_util.c:674:51: note: expanded from macro 'DEBUG_SAVE_ALIGNMENT'
UWord algnmnt__ = sizeof(Unit_t) - (((UWord) (C)) % sizeof(Unit_t));\
^
beam/erl_alloc_util.c:3510:2: note: remove the 'if' if its condition is always true
if (!(flags & CFLG_FORCE_MSEG)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
beam/erl_alloc_util.c:3438:23: note: initialize the variable 'new_crr' to silence this warning
Carrier_t *new_crr, *old_crr;
^
= NULL
|
|
|
|
* sverk/bit-cmp-bug/OTP-11501:
erts: Fix invalid read when appending binaries during call trace
erts: Optimize comparison for bitstrings with byte aligned start
erts: Fix invalid read in bitstring comparison
|
|
* maint:
Fix prim_inet:close/1
Ensure exit signal due to link precede port BIF return
Conflicts:
erts/preloaded/ebin/prim_inet.beam
|
|
* rickard/port_bifs_fix/OTP-11489:
Ensure exit signal due to link precede port BIF return
|
|
* maint:
Improve error info when main carrier creation fails
|
|
* lukas/erts/supercarrier_fix/OTP-11149:
Improve error info when main carrier creation fails
Conflicts:
erts/emulator/test/alloc_SUITE.erl
|
|
|
|
* sverk/bin2term-bitstr-bugs/OTP-11479:
erts: Fix bug in binary_to_term for binaries larger than 2^31
erts: Fix bugs in binary_to_term for invalid bitstrings
|
|
|
|
* sverk/allctr-4byte-align-bug:
erts: Fix alignment bug in allocator start code
OTP-11496
|
|
Found by valgrind. Probably safe on opt-VM due to CHICKEN_PAD.
|
|
|
|
Valgrind complained that erts_cmp_bits sometimes read one byte too much
from bitstrings. The byte was never used and the invalid read is safe
in opt-VM due to padding in binary allocation (CHICKED_PAD).
|
|
|
|
Conflicts:
erts/preloaded/ebin/prim_inet.beam
lib/kernel/test/gen_sctp_SUITE.erl
|
|
|
|
Also fix testcase that failed due to main carrier creation failure.
|
|
* maint:
Ensure carrier pool only accessed by schedulers
|
|
* rickard/acul-bug/OTP-11456:
Ensure carrier pool only accessed by schedulers
|
|
* maint:
Fix observer retrieval of alloc info
Fix documentation of the +MMsco switch
Replace the +MMscmgc switch with +MMscrfsd
Add switch for disabling sys_alloc carriers
Add support for locking mappings to physical memory
|
|
* rickard/supercarrier-fix/OTP-11149:
Fix observer retrieval of alloc info
Fix documentation of the +MMsco switch
Replace the +MMscmgc switch with +MMscrfsd
Add switch for disabling sys_alloc carriers
Add support for locking mappings to physical memory
|
|
Bug never released.
|
|
* maint:
Fix truncated pointers in erl_crash.dump
|
|
* bjorn/erts/fix-erl_crash_dump/OTP-11450:
Fix truncated pointers in erl_crash.dump
|
|
Being able to disable garbage collection over context
switches vastly simplifies implementation of yielding
native code that builds large or complex data structures
on the heap. This since the heap can be left in an
inconsistent state over the context switch.
|
|
A process requesting a system task to be executed in the context of
another process will be notified by a message when the task has
executed. This message will be on the form:
{RequestType, RequestId, Pid, Result}.
A process requesting a system task to be executed can set priority
on the system task. The requester typically set the same priority
on the task as its own process priority, and by this avoiding
priority inversion. A request for execution of a system task is
made by calling the statically linked in NIF
erts_internal:request_system_task(Pid, Prio, Request). This is an
undocumented ERTS internal function that should remain so. It
should *only* be called from BIF implementations.
Currently defined system tasks are:
* garbage_collect
* check_process_code
Further system tasks can and will be implemented in the future.
The erlang:garbage_collect/[1,2] and erlang:check_process_code/[2,3]
BIFs are now implemented using system tasks. Both the
'garbage_collect' and the 'check_process_code' operations perform
or may perform garbage_collections. By doing these via the
system task functionality all garbage collect operations in the
system will be performed solely in the context of the process
being garbage collected. This makes it possible to later implement
functionality for disabling garbage collection of a process over
context switches.
Newly introduced BIFs:
* erlang:garbage_collect/2 - The new second argument is an option
list. Introduced option:
* {async, RequestId} - making it possible for users to issue
asynchronous garbage collect requests.
* erlang:check_process_code/3 - The new third argument is an
option list. Introduced options:
* {async, RequestId} - making it possible for users to issue
asynchronous check process code requests.
* {allow_gc, boolean()} - making it possible to issue requests
that aren't allowed to garbage collect (operation will abort
if gc should be needed).
These options have been introduced as a preparation for
parallelization of check_process_code operations when the
code_server is about to purge a module.
|
|
|
|
<<131, 77, Len:32, Bits:8, Data/binary>>
badarg if Bits > 8
Used to return internally inconsistent bitstring
badarg if Len==0 and Bits > 0
Used to return invalid *huge* binary (size = (Uint)-1)
badarg if Bits==0 and Len > 0
Used to return valid binary as if Bits was 8
|
|
Conflicts:
bootstrap/lib/kernel/ebin/os.beam
|
|
* mhssler/add-os-unsetenv/OTP-11446:
erts: remove ?line macro in testcases
Update primary bootstrap
Add os:unsetenv/1
|
|
|
|
* sverk/valgrind-added-leak-check:
erts: Prevent valgrind from repeating same memory leaks reports
|
|
New BIF os:unsetenv/1 which deletes an environment variable and
returns 'true'.
Does not change any old functionality.
Calls the libc function unsetenv(3) on UNIX and
SetEnvironmentVariableW(key, NULL) on Windows. The unicode support
is the same as for os:getenv and os:putenv.
|
|
|
|
Replaced the +MMscmgc switch with the +MMscrfsd switch. The old switch
didn't reflect what it controlled.
|
|
The switch "+Musac <boolean>" controls if sys_alloc carriers
are allowed.
|
|
Using "+Mlpm all" switch all mappings made by the emulator will
be locked into physical memory.
|
|
|
|
* sverk/monitor-memory-leak/OTP-11410:
erts: Fix memory leak for distributed monitors
|
|
by using the macro VALGRIND_DO_ADDED_LEAK_CHECK if it exists
for system_info({error_checker,memory})
|
|
Disable carrier pool for the thread safe allocator instance 0.
This since non-managed threads allocates and deallocates memory
in this instance, and only managed threads are allowed to
access the carrier pool.
|
|
When dumping the heaps and stacks in the erl_crash.dump file, only
the lower 32 bits of pointers would be printed. Ensure that all bits
are printed.
While at it, make sure that printing sub binaries with a debug compiled
run-time system will work.
|
|
|
|
* egil/fix-crashdump-pointer-crash/OTP-11420:
erts: Fix segfaulting crashdump writing
|