Age | Commit message (Collapse) | Author |
|
* egil/fix-erts_debug-disasm-select_tuple_arity:
erts: Fix erts_debug:df/1 in debug
|
|
* sverk/poll-grow:
erts: Refactor growth of fd tables
|
|
to have one common implementation for both _kp and _nkp.
|
|
* egil/cuddle-tests:
kernel: Remove ?line macros in inet_SUITE:t_gethostbyaddr/1
erts: Tweak statistics_SUITE:scheduler_wall_time/1
|
|
* egil/refactor-close:
erts: Add brackets to statement
|
|
|
|
* egil/license-compliance/OTP-12848:
Revert "lcnt: Let runq locks reflect actual call location"
Revert "Demote rare debug slogan of message discarding to debug build"
Revert "Add missing error string to syslog logging in epmd"
Revert "Add run queue index to process dump info"
Revert "Add thread index to allocator enomem dump slogan"
Revert "Add number of entries to mnesia copy debug message"
|
|
* rickard/io-bytes/OTP-12842:
Save IO bytes in scheduler specific data
|
|
* egil/lcnt-refactor/OTP-12846:
erts: Refactor LCNT
|
|
Sentinels in select_tuple_arity instructions are not proper
tuple arities and thus cannot be checked in debug.
Print them as small integers instead.
|
|
* nybek/fix_so_linger_zero__simple:
Update prim_inet.beam
Fix socket option {linger, {true, 0}} to abort TCP connections
Apply 'show_econnreset' socket option to send errors as well
Add 'show_econnreset' TCP socket option
|
|
|
|
This reverts commit efefd4bfda3156c6c19a61d7aa3d2f50a026d0e5.
Conflicts:
erts/emulator/beam/erl_process.h
|
|
This reverts commit 38bd20f4f58e8025bd3ffc718cb7e40a4bde6396.
|
|
This reverts commit 345af4a0c8d68b9369c3556fa6d911854c123d3f.
|
|
This reverts commit 5d5f9c1857029d7e8e1de141e29d20dd3de929be.
|
|
|
|
|
|
* rickard/+zebwt/OTP-12830:
ETS busy wait option
|
|
Conflicts:
erts/emulator/beam/erl_init.c
erts/etc/common/erlexec.c
|
|
* hamt_bin2term:
erts: Add erts_factory_trim_and_close
erts: Optimize driver_deliver_term
erts: Remove hashmap probabilistic heap overestimation
Conflicts:
erts/emulator/beam/beam_load.c
|
|
|
|
Try write directly to process heap (as before)
if the term is guaranteed not to contain any
big maps that may break the initial size estimation.
|
|
* rc/robustify-module_info/OTP-12820:
erts: Add test for module_info on purged modules
erts: Remove ?line macros from module_info_SUITE
Fix segfault in module_info for deleted modules
|
|
by adding a dynamic heap factory.
"binary_to_term" is now a hybrid solution with both
a call to decoded_size() to calculate needed heap space
AND possible dynamic allocation of more heap space
if needed for big maps.
The heap size returned from decoded_size() is guaranteed
to be sufficient for all term heap data except for hashmap
nodes. All hashmap nodes are created at the end of dec_term()
by invoking the heap factory interface that may allocate more
heap space on process heap or in fragments.
With this commit it is no longer guaranteed that a message
is confined to only one heap fragment.
|
|
* sverk/map-merge-trap:
erts: Optimize maps:merge
erts: Yield in maps:merge
erts: Refactor arg swapping for maps:merge
erts: Add save/restore for PSTACK
erts: Fix magic binary alignment on 32-bit
erts: Add maps to send_term_SUITE
erts: Fix calculation of reclaimed data during full gc
erts: Fix warning about const pointer to make_boxed and make_list
erts: Fix typo in etp-carrier-blocks
|
|
to be better at reusing entire hashmap sub-trees.
Sub-tree reuse is detected in three cases:
1. The sub-tree top node does not exist at all in the other map.
Already implemented before this commit.
2. The exact same sub-tree exist in both maps.
Must calculate nr of keys in tree to get total size right.
3. We detect that a sub-tree only contains stuff from one of the maps.
There is still one case we don't detect. If A and B leafs have equal
keys we could also compare the values. If values are equal, further
node reuse could propagate up toward the root (by 'mix'==0).
The downside would be potentially expensive value comparisons.
|
|
|
|
* rickard/delayed-delete-node/OTP-12802:
Fix error checking for +zdntgc flag
|
|
|
|
* rickard/delayed-delete-node/OTP-12802:
Delayed node table GC
|
|
* rickard/node-table-read-lock/OTP-12777:
Only read lock node table when reading info
|
|
* rickard/timer-improvement/OTP-12650:
Callback timer
Disable accessor timer option
Aux work flag descriptions
Fix test cases
|
|
* rickard/lost-multi-aux-work/OTP-12812:
Fix lost aux work flags when setting multiple flags
|
|
|
|
* egil/fix-purge-literals/OTP-12821:
erts: Fix garbage collect literals in code purge
|
|
|
|
|
|
Add a check to protect from segfault when erlang:get_module_info/1/2 is
called on a deleted module (i.e. with no current code). Also refactor
erts_module_info_0/1 to avoid repeated calls to erts_active_code_ix() and
remove some obsolete comments. Add test for module_info on deleted modules.
|
|
* nybek/fix_inet_drv_add_multi_timer_logic:
Fix add_multi_timer() in inet_drv
Fix 6 tests in gen_tcp_misc_SUITE
OTP-12817
|
|
Up until now, if {linger, {true, 0}} is set on the socket and there is
data in the port driver queue, the connection is not aborted until
the port queue is empty and close() is called on the underlying file
descriptor. This bug allows an idle TCP client to prevent a server
from terminating the connection and freeing resources. This patch
fixes the problem by discarding the port queue if the socket is closed
when {linger, {true, 0}} is set.
|
|
Up till now all send errors have been translated into a generic
{error, closed}. This patch allows {error, econnreset} to be
returned on send errors when it is detected that the TCP peer
has sent an RST.
|
|
An ECONNRESET is a socket error which tells us that a TCP peer has sent
an RST. The RST indicates that they have aborted the connection and
that the payload we have received should not be considered complete. Up
until now, the implementation of TCP in inet_drv.c has hidden the
receipt of the RST from the user, treating it as though it was just
a FIN terminating the read side of the socket.
There are many cases where user code needs to be able to distinguish
between a socket that was closed normally and one that was aborted.
Setting the option {show_econnreset, true} enables the user to receive
ECONNRESET errors on both active and passive sockets.
A connected socket returned from gen_tcp:accept/1 will inherit the
show_econnreset setting of the listening socket.
By default this option is set to {show_econnreset, false}.
Note that this patch only enables the reporting of ECONNRESET when
the socket is being read from. It does not report ECONNRESET (or
EPIPE) when the user tries to write to a connection when an RST
has already been received. Currently the TCP implementation in
inet_drv.c hides all such send errors from the user in favour
of returning {error, close}. A separate patch will be needed to
enable the reporting of such errors.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
All flags was not always set when setting multiple aux work
flags at once. This scenario is fortunately quite uncommon
and only caused further delay in memory deallocations.
|