Age | Commit message (Collapse) | Author |
|
|
|
(homeSize + splitPosition) will do just fine
|
|
|
|
Replace heave array_put() with a dumb array index assignment ARRAY_PUT
and instead introduce ensure_array_size() to be called when
we know the array might need to grow.
This change also ensures the entire HASH_RANGE is always
allocated. No need for ARRAY_GET to check index any more.
|
|
by limiting table sizes to powers of 2.
This will change the default size from 10 to 8.
|
|
* 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
|
|
OTP-13146 (more stuff)
* sverk/dist-ctrl-msg-overflow:
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.
|
|
|
|
|
|
Conflicts:
OTP_VERSION
erts/doc/src/notes.xml
erts/vsn.mk
lib/kernel/doc/src/notes.xml
lib/kernel/src/kernel.appup.src
lib/kernel/vsn.mk
lib/ssl/doc/src/notes.xml
lib/ssl/src/ssl.appup.src
lib/ssl/src/ssl_cipher.erl
lib/ssl/vsn.mk
otp_versions.table
|
|
ERTS_PRINT_INVALID prevented file descriptor 0 to be used which
could cause an empty crash dump.
|
|
|
|
* mikpe/hipe_x86_signal-musl-support:
hipe_x86_signal: add support for musl libc
OTP-13159
|
|
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
|
|
Also, some of the branches were testing sizes in bits against a constant
?MAX_BINSIZE, which was in bytes. The signed comparisons masked this
mistake. These branches have been removed since all sizes in bits that
fit in a machine word are valid binary sizes.
Finally, a test that reproduces the issue was added to bs_construct,
along with a test for one of the cases (bs_init<0>(...)) when the test
against ?MAX_BINSIZE must be changed to unsigned rather than removed.
|
|
The test whether the result would fit in a smallnum could overflow into
a negative number that would fit a smallnum. A test that reproduces the
issue was added to bs_construct_SUITE.
|
|
Conflicts:
erts/emulator/beam/erl_gc.c
erl_gc.c was a dummy merge (--ours) as the bug does not exist
after rewrite.
|
|
* 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.
|
|
|
|
huge_binary/1 did not consider that the Shift variable is not a
constant, and misses the case of a literal size.
|
|
This feature was previously missing and expressions such as
<<<<1:1>>/binary>> would succeed construction when compiled with HiPE.
A primop is_divisible is introduced to handle the case when the unit
size is not a power of two.
|
|
after major GC.
Can only be caused by distributed messages containing large maps.
Bad map hashing will increase the risk.
|
|
|