Age | Commit message (Collapse) | Author |
|
Before this fix the process would continue to process
more distributed down or exit messages until it
ran out of reductions instead of being suspended
immediately.
|
|
|
|
Doing the dump via rpc can introduce all kins of strange
timing issiues. So instead we dump 5ms after the exit has
been started.
|
|
|
|
Because of fragmentation of memory it is not always possible
to allocate enough 320 MB segments on 32-bit so we only sent
smaller packets there.
|
|
This commit fixes an ETS test case that tests the decentralized memory
counter in tables of type ordered_set with the write_concurrency
option turned on. The test case assumed that the memory consumption of
the table would only grow monotonically when terms are
inserted. However, this was not the case when the emulator was
compiled in debug mode as random splits and joins of CA tree nodes
could happen. This commit fixes the test case by disabling random
splits and joins in the tested table.
|
|
1) Improved time calculations
When measuring the time something takes,
use monitonic time instead (of os:timestamp()).
2) Make sure we do not hang when the node start
hangs. We start new (slave) nodes via a starter process.
The point of that is that it can be killed when it
takes to long.
|
|
The cmsg header (decode) problems on darwin was because the
CMSG_FIRSTHDR macro is "faulty" on old versions (of darwin).
I *think* it should return a NULL-pointer if there are no
cmsg headers (but it does not). So, instead of punishing all
platforms with an explicit test
(msg_controllen >= sizeof(struct cmsghdr)) we only do this
on darwin.
|
|
When an evaluator skips (issue a exit or throw skip),
we must make sure all the other also terminates, before
the TC can end.
This was not done which cause the TC to fail when one
of the other evaluators (tester) terminated later.
|
|
When building the (activate next) select message, used terms
from different environments, which is not allowed.
This was during cancel of one request, we tries to activate
next, and then building the select message (with terms from
different environments). Arg! Details...
OTP-15496
|
|
Why can't we all just get along? Casting to shut the compiler up.
|
|
When setting (otp) debug to true, some debug printouts
could become "laaarge". Removed the data from those
printout to avoid problems.
|
|
|
|
When building the (recv) select message, used terms
from different environments, which is not allowed.
OTP-15496
|
|
When building the (accept) select message, used terms
from different environments, which is not allowed.
OTP-15496
|
|
Did the free and assign new acceptor in the wrong order,
thereby causing an (acceptor) environment leak.
OTP-15496
|
|
Building on windows broken again:
* The 'inline' keywork needs som work on windows.
* Function was outside of if-def.
* Missing prototypes resulted in default prototypes.
In this case, the actual problem was missing if-defs
for win32 (that made functions exist on windows
when they should not). Not sure why it compiled just
fine on win32 but not win64 though.
|
|
|
|
Make use of the new select functions; enif_select_[read|write],
for read and write select. These functions allows us to construct
the select message ourseves:
{'$socket', Socket, select, Ref}
This is in preparations for when we introduce the 'nowait'
(or something similar) value for the timeout argument (in accept,
read and write funcions).
It also solves (we hope) the term leakage problems (it was difficult
to free the environment when there was only one/socket).
OTP-15496
|
|
Firstly, make sure socket (and own) options manipulations
are safe by adding a mutex that we take in the setopt and
getopt functions.
Secondly, change type prefix of various types from
'Socket' to 'ESock' (for instance; SocketDescriptor ->
ESockDescriptor).
OTP-15496
|
|
To increase readability the close function has been slightly
restructured.
|
|
To increase readability the recvmsg result check has been slightly
restructured. In this case we made use of the error case function
(fail) of the recv result check.
|
|
To increase readability the recvfrom result check has been slightly
restructured. In this case we made use pf the error case function
(fail) of the recv result check.
|
|
To increase readability the recv result check has been slightly
restructured.
|
|
To increase readability the send result check has been slightly
restructured.
|
|
The messages sent from the nif code to an erlang process
has been changed to:
{'$socket', Socket :: socket(), Tag :: atom(), Info :: term()}
This is in preparation for (using) the new enif select API.
OTP-15496
|
|
Used ref from wrong environment when building reply.
|
|
* bjorn/cuddle-with-tests:
crash dump: Fix printing of "OldBinVHeap unused"
crash dump: Include correct IP for a garbing process
fun_SUITE: Make refc/1 test more reliable
Remove redundant rule from Emakefile
Turn off more optimizations for no_opt modules
test_server_node: Bump compiler compatibility version to OTP 20
erts_test_utils: Bump compiler compatibility version to OTP 20
distribution_SUITE: Remove irrelevant test atom_roundtrip_r16b
bs_construct_SUITE: Rename bs_add_overflow/1 to bs_append_overflow/1
bs_construct_SUITE: Remove troublesome test huge_binary/1
bs_construct_SUITE: Remove incorrect purpose line
|
|
During a garbage collection, there could have been an overflow
in the old virtual heap.
|
|
Make sure that the instruction pointer is correct for a garbing
process in a crash dump.
|
|
Wait a little after to make sure that fun holding process to
complete its termination.
|
|
According to the comment, this rule was only needed when communication
with R7B nodes was supported.
|
|
With the new compiler in OTP 22, we have to use more options to
turn off optimizations.
This commit also skips the match_huge_int/1 test case in the
unoptimized clone of the bs_match_int module because it could
crash on memory-constrained computers.
|
|
* bjorn/erts/measure-process_main/OTP-15620:
Add benchmark
Add erts_debug:interpreter_size/0
|
|
* sverker/node-table-cmp-0-creation-fix:
erts: Revert creation 0 as wildcard in node_table_cmp
|
|
* sverker/revert-big-creation:
Revert "erts: Make DFLAG_BIG_CREATION mandatory"
Revert "erts: Remove old encoding of pids, ports and refs"
Revert "erl_interface: Remove old encoding of pid,port,refs"
Revert "epmd: Support 32-bit creation values in local node"
Revert "jinterface: Remove old encoding of pid,port,refs"
Revert "erl_interface: Support 32-bit creation local cnode"
Revert "erts: Document new EPMD response ALIVE2_X_RESP"
|
|
|
|
Communication with OTP R16b has not been supported for a while.
|
|
The test case tests that the bs_append instruction tests for overflow.
Make that clear by renaming the test case.
While at it, also add a few explicit garbage_collection/0 calls to
make it more likeley to run successfully in tight memory situations.
|
|
This test case can fail for the wrong reason (swapping
followed by a timetrap timeout). It is unlikely to fail because
of a real bug.
|
|
|
|
|
|
This is a partial revert of
bf7c722bd3b30e04a56c2d369fd9f5501a8316d0.
It does not make sense to treat 0 as a wild card in cmp function
for the hash table as creation is part of the hash calculation.
|
|
Previously, all ETS tables used centralized counter variables to keep
track of the number of items stored and the amount of memory
consumed. These counters can cause scalability problems (especially on
big NUMA systems). This commit adds an implementation of a
decentralized counter and modifies the implementation of ETS so that
ETS tables of type ordered_set with write_concurrency enabled use the
decentralized counter. [Experiments][1] indicate that this change
substantially improves the scalability of ETS ordered_set tables with
write_concurrency enabled in scenarios with frequent `ets:insert/2`
and `ets:delete/2` calls.
The new counter is implemented in the module erts_flxctr
(`erts_flxctr.h` and `erts_flxctr.c`). The module has the suffix
flxctr as it contains the implementation of a flexible counter (i.e.,
counter instances can be configured to be either centralized or
decentralized). Counters that are configured to be centralized are
implemented with a single counter variable which is modified with
atomic operations. Decentralized counters are spread over several
cache lines (how many can be configured with the parameter
`+dcg`). The scheduler threads are mapped to cache lines so that there
is no single point of contention when decentralized counters are
updated. The thread progress functionality of the Erlang VM is
utilized to implement support for linearizable snapshots of
decentralized counters. The snapshot functionality is used by the
`ets:info/1` and `ets:info/2` functions.
[1]: http://winsh.me/ets_catree_benchmark/flxctr_res.html
|
|
|
|
erts: Optimize arithmetic ops using overflow intrinsics
|
|
* john/merge-re-replace-fix:
erts: Skip ERTS_NOINLINE on non-GCC-compatible compilers
cleanup: beam_emu.c: use ERTS_NOINLINE instead of NOINLINE
stdlib: fix re:replace on LTO builds
|
|
This reverts commit 321dc6ee0241f802c940def174c0a77262e11f21.
|
|
This reverts commit 0b74eec2a1fd5716ba6e21d8c6715433d8d34510.
|
|
This reverts commit bd8f6106d44a58c261920eef72842bb3bc5a4968.
PLUS a little change in epmd_srv.c:750 ("4" -> "replylen")
that was part of e2cf4a8a4b03b9f430ba228276c3b2629159e832
by mistake.
|