aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
AgeCommit message (Collapse)Author
2018-10-26erts: Remove lock ordering of catree base nodesSverker Eriksson
We no longer lock more than one base node at a time. We do however trylock a second base node at join.
2018-10-26erts: Let lock checker allow trylock of same orderSverker Eriksson
for different lock instances.
2018-10-26erts: Fix bug in lock checker for term comparisonSverker Eriksson
2018-10-26erts: Join empty base nodes in catreeSverker Eriksson
The original implementation did not do this due to fear of bad performance. But we think the negative effect of "leaking" empty base nodes is more important to fix. To get the bad performance a special kind of access patterns is needed where base nodes are frequently emptied and then repopulated soon again. ets_SUITE:throughput_benchmark for example did not show any negative effect from this commit at all.
2018-10-26Inline erts_cmpJohn Högberg
This greatly increases the performance of '--'/2 which does a lot of term comparisons.
2018-10-25Clarify a magical allocation sizeDmytro Lytovchenko
2018-10-25Fix trapping in lists:reverse/2John Högberg
The first stage wasn't bounded by reductions, and it bumped far more reductions than it should have due to a logic bug.
2018-10-24Extend the sharing-preserving routines to optionally copy literalsBjörn Gustavsson
In the implementation of the zero-copying term storage, we want to preserve sharing, but not copy literals because the modules holding the literals could be unloaded under our feet.
2018-10-24Merge branch 'maint'Björn Gustavsson
* maint: beam_lib: Remove obsolete module() from the beam() type hipe: Don't use beam_lib:info/1 with an atom as filename Honor the max heap size when copying literals after purging
2018-10-23erts: Refactor DbUpdateHandle with nicer typesSverker Eriksson
2018-10-23erts: Refactor away function generating macros in erl_db_catree.cSverker Eriksson
Easier to read and debug, and about the same lines of code.
2018-10-23erts: Fix faulty assert in catree_find_nextprev_rootSverker Eriksson
It's possible to first find an empty base node and then retry and find the same base node as invalid. It's a benign race with join which first makes the old invalid 'neighbor' accessible from 'gparent' before replacing it with 'new_neighbor'.
2018-10-23erts: Provoke random catree split/join for DEBUG emulatorSverker Eriksson
2018-10-23erts: Fix slot bug in find_next/prevSverker Eriksson
2018-10-23erts: Fix lc_key in base nodesSverker Eriksson
to actually pass the copy to lock checker.
2018-10-23erts: Do contention adaptions during (updating) iterationsSverker Eriksson
Once an iteration key has been found, never fall back to first/last key in next/prev tree as trees may split or join under our feet. I.e we must always use previous key when searching for the next key.
2018-10-23erts: Optimize find_next/prev_from_pb_keySverker Eriksson
to not have to backtrack up on the stack.
2018-10-23erts: Add erts_debug feature 'ets_force_split'Sverker Eriksson
to easier generate a routing tree for test without having to spend cpu to provoke actual repeated lock conflicts.
2018-10-23erts: Implement ets:info(T, stats) for catreesSverker Eriksson
{RouteNodes, BaseNodes, MaxRouteTreeDepth}
2018-10-19erts: Remove dead tree merging codeSverker Eriksson
2018-10-19erts: Remove tree merging for print and foreach_offheapSverker Eriksson
2018-10-19erts: Remove tree merging for ets:slotSverker Eriksson
Brute force solution will always iterate tree from slot 0 and forward. ToDo1: Yield. ToDo2: Maybe optimize by caching AVL tree size in each base node.
2018-10-19erts: Remove tree merging for ets:first,last,next,prevSverker Eriksson
2018-10-19erts: Remove tree merging for ets:select*Sverker Eriksson
2018-10-19erts: Add table type assertions for static stack accessSverker Eriksson
DbTableCATree has no static stack.
2018-10-19erts: Refactor ets:select* bound key lookupSverker Eriksson
Move lookup from analyze_pattern to callers.
2018-10-19erts: Refactor ets ordered_set match spec key boundnessSverker Eriksson
2018-10-19erts: Fix compiler warning in erl_bif_binary.cSverker Eriksson
2018-10-19erts: Fix debug_realloc for ptr==NULLSverker Eriksson
2018-10-19Honor the max heap size when copying literals after purgingBjörn Gustavsson
When a module has been purged from memory, any literals belonging to that module will be copied to all processes that hold references to them. The max heap size limit would be ignored in the garbage collection initiated when copying literals to a process. If the max heap size was exceeded, the process would typically be terminated in the following garbage collection. Since the process would be killed anyway later, kill the process before copying a literal that would make it exceed its max heap size. While at it, also fix a potential bug in `erlang:garbage_collect/0`. If it was found that the max heap sized had been exceeded while executing `erlang:garbage_collect/0`, the process would enter a kind of zombie state instead of being properly terminated.
2018-10-17Merge branch 'maint'Sverker Eriksson
2018-10-17Merge branch 'sverker/erts/debug_free_null' into maintSverker Eriksson
* sverker/erts/debug_free_null: erts: Fix bug in debug_free for NULL pointer
2018-10-17Merge branch 'john/erts/update-zlib/OTP-15351/ERL-749'John Högberg
* john/erts/update-zlib/OTP-15351/ERL-749: Update zlib to 1.2.11 Allow undefined macros when building zlib
2018-10-17Merge branch 'maint'John Högberg
* maint: "cork" tcp socket around file:sendfile Add nopush TCP socket option
2018-10-17Merge branch 'igor/tcp-nopush-ERL-698/OTP-15357' into maintJohn Högberg
* igor/tcp-nopush-ERL-698/OTP-15357: "cork" tcp socket around file:sendfile Add nopush TCP socket option
2018-10-16Merge branch 'fhunleth/fix-muslc-compiler-error' into ↵John Högberg
john/erts/update-zlib/OTP-15351/ERL-749 * fhunleth/fix-muslc-compiler-error: Allow undefined macros when building zlib
2018-10-16Update zlib to 1.2.11John Högberg
2018-10-15erts: Fix bug in debug_free for NULL pointerSverker Eriksson
causing ASSERT in sys_memset to fail.
2018-10-12Merge branch 'maint'Rickard Green
* maint: Updated OTP version Prepare release erts: Fix UNC path handling on Windows erts: Fix a compiler warning eldap: Fix race at socket close Fix bug for sockopt pktoptions on BSD erts: Fix memory leak on file read errors
2018-10-12Merge branch 'maint-21' into maintRickard Green
* maint-21: Updated OTP version Prepare release erts: Fix UNC path handling on Windows erts: Fix a compiler warning eldap: Fix race at socket close Fix bug for sockopt pktoptions on BSD erts: Fix memory leak on file read errors
2018-10-12Merge branch 'john/erts/fix-unc-paths-windows/OTP-15333/ERL-737' into maint-21Erlang/OTP
* john/erts/fix-unc-paths-windows/OTP-15333/ERL-737: erts: Fix UNC path handling on Windows erts: Fix a compiler warning
2018-10-12Merge branch 'raimo/BSD-sockopt-pktoptions/ERIERL-187/OTP-14297' into maint-21Erlang/OTP
* raimo/BSD-sockopt-pktoptions/ERIERL-187/OTP-14297: Fix bug for sockopt pktoptions on BSD
2018-10-12Merge branch 'maint'Raimo Niskanen
Conflicts: erts/preloaded/ebin/prim_inet.beam
2018-10-12Merge pull request #1974 from ↵Raimo Niskanen
RaimoNiskanen/raimo/getifaddrs-netns/ERIERL-189/OTP-15121 Implement {netns,NS} option for inet:getifaddrs/1 and friends
2018-10-11Allow undefined macros when building zlibFrank Hunleth
When building Erlang on a system that uses the Musl C library, it's possible to get the following error: In file included from zlib/adler32.c:11:0: zlib/zutil.h:172:39: error: "_LFS64_LARGEFILE" is not defined [-Werror=undef] (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) ^~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors On the same systems, zlib is built without `-Werror=undef` so do the same when building it with Erlang. Signed-off-by: Frank Hunleth <[email protected]>
2018-10-11erts: Fix UNC path handling on WindowsJohn Högberg
This is unlikely to be the last of the path problems seen after OTP 21, and I'm starting to regret my decision to unconditionally use long paths. The idea to hit all long-path problems all the time was good in theory as it makes such bugs far more visible, but there just aren't enough people who test pre-release versions on Windows, making this the world's slowest game of whack-a-mole.
2018-10-11erts: Fix a compiler warningJohn Högberg
This would've been a bug if the value was used.
2018-10-11Add nopush TCP socket optionIgor Slepchin
This translates to TCP_CORK on Linux and TCP_NOPUSH on BSD. In effect, this acts as super-Nagle: no partial TCP segments are sent out until this option is turned off. Once turned off, all accumulated unsent data is sent out immediately. The latter is *not* the case on OSX, hence the implementation ignores "nopush" on OSX to reduce confusion.
2018-10-09erts: Fix bug introduced in merge commitSverker Eriksson
f4f409ff28185b3308359ca5ca91921bc51f536f
2018-10-09Merge branch 'maint'Sverker Eriksson
# Conflicts: # erts/emulator/beam/erl_db_tree.c