aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
AgeCommit message (Collapse)Author
2018-11-28erts: Fix unexpected inet_reply message from failing file:sendfileSverker Eriksson
A failing file:sendfile call would often send a message {inet_reply, Port, {error, Reason}} that would pollute the mailbox of the calling process. TCP_REQ_SENDFILE has its own reply messages format {sendfile, _, _} and does not expect an inet_reply message. Solution: Suppress inet_reply error message if TCP_ADDF_SENDFILE is set.
2018-11-28erts: Fix bug in sendfile for active socketSverker Eriksson
driver_select() was called after port had been killed by tcp_inet_sendfile() calling tcp_send_error().
2018-11-27Merge branch 'maint'Lukas Larsson
2018-11-27Merge branch 'lukas/erts/fix-msacc-gc-states/OTP-15450' into maintLukas Larsson
* lukas/erts/fix-msacc-gc-states/OTP-15450: erts: Fix msacc GC states on dirty scheds
2018-11-27Abort when aux work runs on a dirty schedulerJohn Högberg
While the system will keep working, the aux work will never run and the affected scheduler never goes to sleep. OTP-15446 is a good example of this. As this error easily flies under the radar it's best to make it immediately visible. The assertions we had in debug builds were clearly not enough to catch all sources of this problem.
2018-11-27Merge branch 'maint'John Högberg
* maint: erts: fix attempt to start timer when executing on dirty scheduler
2018-11-27Merge pull request #2024 from max-au/fix_aux_work_on_dcpu_schedJohn Högberg
erts: fix attempt to start timer when executing on dirty scheduler OTP-15446
2018-11-26erts: fix attempt to start timer when executing on dirty schedulerMaxim Fedorov
Since OTP R20, there is a possibility for MAJOR garbage collection to run on dirty scheduler. So DistEntry destructor is being called on dirty scheduler as well. This, in turn, leads to an attempt to schedule timer on a dirty scheduler too, which is impossible (and will assert on debug build, but does succeed for release build, creating an infinite busy loop, since aux work wakes scheduler up, but dirty scheduler cannot execute aus work). There is a similar method in erl_hl_timer, see erts_start_timer_callback.
2018-11-26Merge branch 'maint'Sverker Eriksson
2018-11-26Merge branch 'sverker/erts/atomics-counters/OTP-13468' into maintSverker Eriksson
* sverker/erts/atomics-counters/OTP-13468: erts: Fix bug in counters erts: Refactor erl_bif_counters.c
2018-11-23erts: Fix bug in countersSverker Eriksson
Wow, that could have been embarrassing.
2018-11-23erts: Refactor erl_bif_counters.cSverker Eriksson
with more consistent naming.
2018-11-23Merge branch 'john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237' ↵Erlang/OTP
into maint-21 * john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237: Allow disabling retpoline in interpreter loop Add a ./configure flag for spectre mitigation
2018-11-23Merge branch 'maint'John Högberg
* maint: Allow disabling retpoline in interpreter loop Add a ./configure flag for spectre mitigation
2018-11-23Merge branch 'john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237' ↵John Högberg
into maint * john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237: Allow disabling retpoline in interpreter loop Add a ./configure flag for spectre mitigation
2018-11-22Merge branch 'maint'Sverker Eriksson
2018-11-22Merge branch 'sverker/erts/atomics-counters/OTP-13468' into maintSverker Eriksson
AGAIN * sverker/erts/atomics-counters/OTP-13468: erts: Add counters:put/3
2018-11-22erts: Fix faulty assert in driver_SUITESverker Eriksson
Set drv_use_singleton.fd_stop_select to -2 in start() as it's only used by driver_SUITE:driver_select_use.
2018-11-21erts: Add counters:put/3Sverker Eriksson
2018-11-20erts: Improve driver_SUITE:smp_selectSverker Eriksson
to better detect an actual missing ready_input event on slow machines (valgrind) and without wasting time with long sleep on fast machines.
2018-11-20Merge branch 'john/erts/spectre-configure-flag/OTP-15430/ERIERL-237' into ↵John Högberg
john/erts/spectre-configure-flag-otp_20/OTP-15430/ERIERL-237 * john/erts/spectre-configure-flag/OTP-15430/ERIERL-237: Allow disabling retpoline in interpreter loop Add a ./configure flag for spectre mitigation
2018-11-20Allow disabling retpoline in interpreter loopJohn Högberg
We only do this when the user has explicitly told us it's okay to partially disable mitigation (spectre-mitigation=incomplete). The macro is inert if it isn't.
2018-11-20Merge branch 'sverker/ets-ordered-set-fixups'Sverker Eriksson
2018-11-16erts: Fix offheap leak of ets catree tmp iteration keySverker Eriksson
Also fix erts_debug:get_internal_status(node_and_dist_references) for catree to also search route node keys for offheap stuff.
2018-11-16erts: Refactor out erts_test_utils from node_container_SUITESverker Eriksson
to be usable by other application tests.
2018-11-16erts: Refactor erl_db_catree.cSverker Eriksson
with some code moving and removed obsolete comments.
2018-11-16Merge branch 'john/erts/plusplus-trapping/OTP-15427'John Högberg
* john/erts/plusplus-trapping/OTP-15427: Don't use too many reductions in lists:reverse/2 Make '++'/2 trapping
2018-11-16Merge branch 'maint'John Högberg
* maint: Fix broken assertion on monitor release Avoid closing files in gc/monitor callbacks
2018-11-16Merge branch 'john/erts/defer-orphan-file-close/OTP-15421/ERIERL-261' into maintJohn Högberg
* john/erts/defer-orphan-file-close/OTP-15421/ERIERL-261: Fix broken assertion on monitor release Avoid closing files in gc/monitor callbacks
2018-11-15Merge branch 'maint'Sverker Eriksson
2018-11-15Merge branch 'sverker/erts/atomics-counters/OTP-13468' into maintSverker Eriksson
* sverker/erts/atomics-counters/OTP-13468: erts: Add new module 'counters' erts: Add new module 'atomics'
2018-11-15erts: Add new module 'counters'Sverker Eriksson
2018-11-15erts: Add new module 'atomics'Sverker Eriksson
2018-11-13Fix broken assertion on monitor releaseJohn Högberg
We sometimes bump the refc without messing with the table, which means that we sometimes decrement it while in the table, causing the old assertion to fail. The property we want to check is that neither end of the monitor is present in the table when the monitor is deleted.
2018-11-13Avoid closing files in gc/monitor callbacksJohn Högberg
Closing files in these callbacks could block scheduler progress and cause major system instability. We now defer these operations to a dedicated process instead. This process may in turn block forever and prevent further orphaned files from being closed, but it will keep the emulator itself from misbehaving.
2018-11-09Don't use too many reductions in lists:reverse/2John Högberg
2018-11-09Make '++'/2 trappingJohn Högberg
2018-11-09Merge branch 'maint'John Högberg
* maint: Remove --/2 from dirty BIF tests
2018-11-09Remove --/2 from dirty BIF testsJohn Högberg
Now that it traps, --/2 would hang forever when building under --enable-dirty-schedulers-test.
2018-11-07Remerge branch 'sverker/erts/ordered_set-select-improvements/OTP-15325'Sverker Eriksson
* sverker/erts/ordered_set-select-improvements/OTP-15325: erts: Tidy some ordered_set iteration code erts: Fix bug for catree iteration
2018-11-06Merge branch 'maint'Björn Gustavsson
* maint: Implement a tab for persistent terms in crashdump viewer Add tests of persistent terms for crashdump_viewer Add a persistent term storage Refactor releasing of literals Extend the sharing-preserving routines to optionally copy literals Conflicts: erts/emulator/Makefile.in erts/emulator/beam/erl_process_dump.c erts/preloaded/ebin/erts_internal.beam erts/preloaded/ebin/init.beam lib/sasl/src/systools_make.erl
2018-11-06Merge branch 'bjorn/erts/persistent_terms/OTP-14669' into maintBjörn Gustavsson
* bjorn/erts/persistent_terms/OTP-14669: Implement a tab for persistent terms in crashdump viewer Add tests of persistent terms for crashdump_viewer Add a persistent term storage Refactor releasing of literals Extend the sharing-preserving routines to optionally copy literals
2018-11-06Add a persistent term storageBjörn Gustavsson
Persistent terms are useful for storing Erlang terms that are never or infrequently updated. They have the following advantages: * Constant time access. A persistent term is not copied when it is looked up. The constant factor is lower than for ETS, and no locks are taken when looking up a term. * Persistent terms are not copied in garbage collections. * There is only ever one copy of a persistent term (until it is deleted). That makes them useful for storing configuration data that needs to be easily accessible by all processes. Persistent terms have the following drawbacks: * Updates are expensive. The hash table holding the keys for the persistent terms are updated whenever a persistent term is added, updated or deleted. * Updating or deleting a persistent term triggers a "global GC", which will schedule a heap scan of all processes to search the heap of all processes for the deleted term. If a process still holds a reference to the deleted term, the process will be garbage collected and the term copied to the heap of the process. This global GC can make the system less responsive for some time. Three BIFs (implemented in C in the emulator) is the entire interface to the persistent term functionality: * put(Key, Value) to store a persistent term. * get(Key) to look up a persistent term. * erase(Key) to delete a persistent term. There are also two additional BIFs to obtain information about persistent terms: * info() to return a map with information about persistent terms. * get() to return a list of a {Key,Value} tuples for all persistent terms. (The values are not copied.)
2018-11-02erts: Fix msacc GC states on dirty schedsLukas Larsson
A dirty scheduler is an un-managed thread so we need to lock the msacc state on those.
2018-11-02Merge branch 'maint'John Högberg
* maint: Optimize operator '--' and yield on large inputs Inline erts_cmp Clarify a magical allocation size Fix trapping in lists:reverse/2
2018-11-02Merge branch 'john/erts/minusminus_trapping/OTP-15371' into maintJohn Högberg
* john/erts/minusminus_trapping/OTP-15371: Optimize operator '--' and yield on large inputs Inline erts_cmp Clarify a magical allocation size Fix trapping in lists:reverse/2
2018-11-01Merge branch 'sverker/enif-cancel-select/OTP-15095'Sverker Eriksson
* sverker/enif-cancel-select/OTP-15095: erts: Bump erl_nif minor version and ERL_NIF_MIN_ERTS_VERSION
2018-11-01erts: Bump erl_nif minor version and ERL_NIF_MIN_ERTS_VERSIONSverker Eriksson
with ticket syntax.
2018-11-01erts: Tidy some ordered_set iteration codeSverker Eriksson
with variable name changes, some comments and moved catree_find_prev_from_pb_key_root after its twin.
2018-11-01erts: Fix bug for catree iterationSverker Eriksson
with keys containing off-heap terms. The passed key may actually be the one already saved (if nodes have been joined), in which case we do nothing. Calling destroy_route_key() may destroy off-heap data.