Age | Commit message (Collapse) | Author |
|
* lv/fix-compilation-with-vm-probes/OTP-13209:
Fix compilation with `--enable-vm-probes`
|
|
* rickard/ohmq-fixup/OTP-13047:
Fix offset_mqueue
|
|
|
|
* rickard/ohmq-fixup/OTP-13047:
Fix check_process_code()
|
|
* lukas/erts/forker: (28 commits)
erts: Never abort in the forked child
erts: Mend ASSERT makro for erl_child_setup
erts: Allow enomem failures in port_SUITE
erts: iter_port sleep longer on freebsd
erts: Allow one dangling fd if there is a gethost port
erts: Only use forker StackAck on freebsd
erts: It is not possible to exit the forker driver
erts: Add forker StartAck for port start flowcontrol
erts: Fix large open_port arg segfault for win32
erts: Fix memory leak at async open port
kernel: Remove cmd server for unix os:cmd
erts: Add testcase for huge port environment
erts: Move os_pid to port hash to child setup
erts: Handle all EINTR and EAGAIN cases in child setup
erts: Make child_setup work with large environments
erts: Fix forker driver ifdefs for win32
erts: Fix uds socket handling for os x
erts: Fix dereferencing of unaligned integer for sparc
erts: Flatten too long io vectors in uds write
erts: Add fd count test for spawn_driver
...
Conflicts:
erts/emulator/beam/erl_node_tables.c
erts/preloaded/src/erts_internal.erl
|
|
|
|
When an async open port fails early, it would sometimes
leak memory.
|
|
Had to move the hashing because of a race that can otherwise happen
where a new os_pid value was inserted into the hash before the
previous value had been removed.
Also replaced the protocol inbetween erts and child setup to be
a binary protocol. This was done in order to deal with the varying
size of Eterm.
|
|
|
|
Instead of forking from the beam process, we create a separate
process in which all forks are done. This has several advantages:
1) performance:
* don't have to close all fd's in the world
* fork only has to copy stuff from a small process
* work is done in a completely seperate process
* a 3x performance increase has been measured,
can be made even greater (10x) if we cache the
environment in child setup
2) stability
* the exec is done in another process than beam, which means that
if the file that we exec to is on an nfs that is not available
right now we will not block a scheduler until the nfs returns.
3) simplicity
* don't have to deal with SIGCHLD in the erts
Unfortunately, this solution also implies some badness.
1) There will always be a seperate process running together with
beam on unix. This could be confusing and undesirable.
2) We have to transfer the entire environment to child_setup
for each command.
OTP-13088
|
|
|
|
|
|
OTP-13087
|
|
OTP-13086
|
|
|
|
* sverk/setnode-rename-bug/OTP-13076:
erts: Fix correct node name for DTRACE
|
|
broken by 949de78331b9c4ecb9.
|
|
|
|
Bug introduced in ce8279d6a48d41f9.
Thank you valgrind.
|
|
* sverk/hash-thresholds:
erts: Remove unused include files from hash.c
erts: Redesign grow/shrink thresholds of hash.c
erts: Remove dead code erts_hash_merge
|
|
* sverk/dist-ctrl-msg-overflow-master:
erts: Tweak hashmap heap size estimation
erts: Fix bug for remote control message containing fat maps
erts: Add test for remote exit signal with fat map
erts: Fix bug in heap_factory_undo for FACTORY_HEAP_FRAGS mode
|
|
* egil/pd-opt-get/OTP-13167:
erts: Add i_get_hash instruction
erts: Use internal hash for process dictionaries
|
|
|
|
* egil/term_type/OTP-13172:
Test erts_internal:term_type/1
erts: Let term_type/1 encompass all types
erts: Change erts_internal:map_type/1 into term_type/1
|
|
* rickard/ohmq-fixup/OTP-13047:
Replace off_heap_message_queue option with message_queue_data option
Always use literal_alloc
Distinguish between GC disabled by BIFs and other disabled GC
Fix process_info(_, off_heap_message_queue)
Off heap message queue test suite
Remove unused variable
Fix memory leaks
|
|
sverk/dist-ctrl-msg-overflow-master
|
|
The message_queue_data option can have the values
- off_heap
- on_heap
- mixed
|
|
|
|
Processes remember heap fragments that are known to be fully
live due to creation in a just called BIF that yields in the
live_hf_end field. This field must not be used if we have not
disabled GC in a BIF. F_DELAY_GC has been introduced in order
to distinguish between to two different scenarios.
- F_DISABLE_GC should *only* be used by BIFs. This when
the BIF needs to yield while preventig a GC.
- F_DELAY_GC should only be used when GC is temporarily
disabled while the process is scheduled. A process must
not be scheduled out while F_DELAY_GC is set.
|
|
|
|
|
|
|
|
... broken by 3ac08f9b.
Compilation error:
```
beam/erl_message.c: In function 'erts_send_message':
beam/erl_message.c:753:56: error: macro "copy_struct" requires 4 arguments, but only 3 given
utag = copy_struct(DT_UTAG(sender), dt_utag_size, ohp);
^
beam/erl_message.c:753:10: error: 'copy_struct' undeclared (first use in this function)
utag = copy_struct(DT_UTAG(sender), dt_utag_size, ohp);
^
beam/erl_message.c:753:10: note: each undeclared identifier is reported only once for each function it appears in
```
|
|
|
|
to support other terms, not just maps
|
|
1. Change order between mul and div to not lose too much
in integer divisions.
2. Fix estimation in DEBUG to really be an *under* estimation.
|
|
that could cause the static factory to overflow
Fix: Introduce a new factory mode FACTORY_TMP
|
|
Calculate hashvalue in load-time for constant process dictionary gets.
|
|
|
|
Make sure a heap fragment is not deallocated before all off_heap
terms have been cleared.
The fix assumes/asserts that the off_heap-lists of all additional
heap fragments are empty.
I think this bug has been harmless as hashmap nodes, which is only
ones (?) that can cause a factory to produce more heap,
are not linked in off_heap-list.
|
|
* egil/fix-seq_trace:
Fix seq_trace token copy size
Fix seq_trace refactoring bug
|
|
* sverk/rare-gc-map-overflow/OTP-13146:
erts: Fix rare case of faulty heap fragment deallocation
|
|
* maint:
Remove ERTS_PRINT_INVALID from erts_print()
|
|
* rickard/erts-print/OTP-13150:
Remove ERTS_PRINT_INVALID from erts_print()
|
|
ERTS_PRINT_INVALID prevented file descriptor 0 to be used which
could cause an empty crash dump.
|
|
Note that hash.c is quite "clean" from Erlang stuff
and is used by erl_child_setup as well.
|
|
1. Use load factor as indicator, not used buckets.
Used buckets is a bad indicator as it makes the situation even
worse with a bad hash function.
Set grow_threshold to load factor of 160% as it roughly corresponds
to the old 80% used bucket limit.
2. Never shrink table below initial size.
|
|
|
|
after major GC.
Can only be caused by distributed messages containing large maps.
Bad map hashing will increase the risk.
|
|
|