Age | Commit message (Collapse) | Author |
|
Just mask away the high bits to get a more tolerant erlang:halt
that behaves the same on 32 and 64 bit architectures.
|
|
This is mostly a pure refactoring.
Except for the buggy cases when calling erlang:halt() with a positive
integer in the range -(INT_MIN+2) to -INT_MIN that got confused with
ERTS_ABORT_EXIT, ERTS_DUMP_EXIT and ERTS_INTR_EXIT.
Outcome OLD erl_exit(n, ) NEW erts_exit(n, )
------- ------------------- -------------------------------------------
exit(Status) n = -Status <= 0 n = Status >= 0
crashdump+abort n > 0, ignore n n = ERTS_ERROR_EXIT < 0
The outcome of the old ERTS_ABORT_EXIT, ERTS_INTR_EXIT and
ERTS_DUMP_EXIT are the same as before (even though their values have
changed).
|
|
* sverk/setnode-rename-bug/OTP-13076:
erts: Fix correct node name for DTRACE
|
|
broken by 949de78331b9c4ecb9.
|
|
* sverk/dist-ctrl-msg-overflow:
erts: Fix faulty cleanup when receiving broken dist msg
|
|
Bug introduced in ce8279d6a48d41f9.
Thank you valgrind.
|
|
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
|
|
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
|
|
|
|
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
|
|
* 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.
|
|
* sverk/rare-gc-map-overflow/OTP-13146:
erts: Fix rare case of faulty heap fragment deallocation
|
|
* 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.
|
|
after major GC.
Can only be caused by distributed messages containing large maps.
Bad map hashing will increase the risk.
|
|
OTP-13147
* sverk/cpool_fetch-dc_list-fix:
erts: Reduce alloc_SUITE:rbtree runtime for valgrind
erts: Remove double free in efile_drv
erts: Improve alloc_SUITE:migration test
erts: Pass free mem and build type to alloc_SUITE tests
erts: Fix snprintf in alloc_SUITE for windows
erts: Workaround for strange crash on win64 in alloc_SUITE test code
erts: Refactor alloc_SUITE to use NIFs instead of drivers
erts: Add enif_getenv
erts: Make key argument constant for erl_drv_{get|put}env
erts: Add alloc_SUITE:migration
erts: Add TEST allocator
erts: Fix confusion of callbacks destroying_mbc() vs remove_mbc()
erts: Fix resurrection of carriers from dc_list
|
|
* sverk/setnode-rename-bug/OTP-13076:
erts: Fix bug in setnode/2
erts: Remove ERTS_PSD_DIST_ENTRY
erts: Remove faulty ASSERT in erts_proc_*_refc
|
|
|
|
That double free is probably very seldom invoked as the port is already
gone leading to free_data being called instead of file_async_ready.
|
|
In the quest to improve code coverage in cpool_fetch
|
|
|
|
|
|
For some reason setjmp() crash when having jmp_buf heap allocated
but works when stack allocated.
|
|
|
|
to read OS environment variables in a safe and portable way.
|
|
* egil/18/fix-maps-binary_to_term/OTP-13125:
erts: More testcases for map binary_to_term/1
erts: Fix maps decode in erlang:binary_to_term/1
|
|
|
|
Decoding a term with a large (HAMT) map in an small (FLAT) map could cause
a critical error if the external format was not produced by beam.
|
|
|
|
* sverk/nif_SUITE-win64-long-bug:
erts: Fix nif_SUITE for win64
|
|
* zenhack/fix-erroneous-__uint32_t:
Fix erroneous use of __uint32_t
OTP-13105
|
|
- change #if tests at default Solaris case to explicitly check for __sun__
- add new default case, instantiate it for musl
|
|
where type long is only 32-bit and can not hold a pointer
unless your lucky.
|
|
This should be a harmless and compatible API change.
|
|
|
|
|
|
that could lead strange things to happen when renaming a node with
a name that already exist in node and dist tables.
Problem:
erts_set_this_node() is a bit brutal and does not handle the case
when an old remote node name is reused as the new local node name.
Solution:
Treat erts_this_node and erts_this_dist_entry as all the others
with correct reference counting.
|
|
* lukas/erts/win32_bool_fix/OTP-13079:
erts: bool is a reserved word, use boolean instead
|
|
Not needed as it is always set to erts_this_dist_entry (on net_kernel).
|
|
There is no guarantee that the ptab-slot in not reused
when we finally deallocates the process struct.
|
|
* lukas/erts/process_mem_test_fix/OTP-13077:
erts: Don't run processes tests on lcnt with little memory
|
|
* lrascao/fix/build_fail_on_enabled_dist_debug:
Fix build fail when enabling distribution debug messages
|
|
A new {line_delimiter, byte()} option allows line-oriented TCP-based
protocols to use a custom line delimiting character. It is to be
used in conjunction with {packet, line}.
This option also works with erlang:decode_packet/3 when its first argument
is 'line'.
|
|
The presence of this symbol is libc-specific. In particular, it is
absent from musl. The correct solution is to use uint32_t.
|
|
* kostis/hipe-native-bif-warning:
Take out unused code that results in a gcc warning
OTP-13041
|
|
|
|
|
|
Problem #1 Goodfit was crippled by the fact that destroying_mbc()
was called _before_ the carriers was unlinked from mbc_list.
Problem #2 destroying_mbc() was called for carriers that later could be
resurrected from dc_list without a matching call to creating_mbc().
This was mostly a practical problem for the new test case
alloc_SUITE:migration that use the callbacks to create/destroy a mutex.
Solution:
destroying_mbc() is now only called just before a carrier is
destroyed (deallocated or put in mseg cache).
remove_mbc() is called both (like before) when inserted into cpool
but now also when last block is freed and mbc is scheduled for
destruction but may later be resurrected from dc_list.
|