aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2018-11-05Optimize operator '--' and yield on large inputsJohn Högberg
The removal set now uses a red-black tree instead of an array on large inputs, decreasing runtime complexity from `n*n` to `n*log(n)`. It will also exit early when there are no more items left in the removal set, drastically improving performance and memory use when the items to be removed are present near the head of the list. This got a lot more complicated than before as the overhead of always using a red-black tree was unacceptable when either of the inputs were small, but this compromise has okay-to-decent performance regardless of input size. Co-authored-by: Dmytro Lytovchenko <[email protected]>
2016-04-01Prepare releaseErlang/OTP
2016-04-01Merge branch 'sverker/erts/trap_exit-race/OTP-13452' into maint-18Erlang/OTP
* sverker/erts/trap_exit-race/OTP-13452: erts: Fix race for process_flag(trap_exit,true)
2016-04-01Merge branch 'rickard/proc-free-fix/OTP-13446' into maint-18Erlang/OTP
* rickard/proc-free-fix/OTP-13446: Fix bad refc management of process struct # Conflicts: # erts/emulator/beam/erl_process.c
2016-04-01Merge branch 'rickard/port-sig-dropped-fix/OTP-13424' into maint-18Erlang/OTP
* rickard/port-sig-dropped-fix/OTP-13424: Fix implementation of dropped signal to port
2016-04-01Merge branch 'rickard/ethr-event-futex-wait-timeout/OTP-13420' into maint-18Erlang/OTP
* rickard/ethr-event-futex-wait-timeout/OTP-13420: Fix premature timeouts for ethread events on Linux
2016-04-01Merge branch 'rickard/last_calls/OTP-13418' into maint-18Erlang/OTP
* rickard/last_calls/OTP-13418: Unbreak process_info(Pid,last_calls)
2016-04-01erts: Fix race for process_flag(trap_exit,true)Sverker Eriksson
and a concurrent exit signal. We now actually guarantee that the process will not die from exit signal *after* the call to process_flag(trap_exit,true) has returned. The race is narrow and probably quite hard to observe even if you manage to provoke it. Has only been confirmed with the help of return trace and a sleep in send_exit_signal(). Solution: Seize status lock to prevent send_exit_signal() from reading an old status (without TRAP_EXIT) and then writing PENDING_EXIT after TRAP_EXIT has been set by process_flag_2().
2016-03-31Fix bad refc management of process structRickard Green
2016-03-18Fix implementation of dropped signal to portRickard Green
2016-03-16Fix premature timeouts for ethread events on LinuxRickard Green
2016-03-16Unbreak process_info(Pid,last_calls)Rickard Green
2016-03-16erts: Create erl_crash.dump when out of memoryLukas Larsson
This was accidentally removed in commit cd6903be0740db
2016-03-14Prepare releaseErlang/OTP
2016-03-11Update preloaded modulesLars Thorsen
2016-03-10Prepare releaseErlang/OTP
2016-03-09erts: Fix wobbling tests in nif_SUITESverker Eriksson
No point in checking tmp_alloc instance 0 as any non-scheduler thread could race us.
2016-03-08erts: Fix alloc_SUITE:rbtree and migration for win64Sverker Eriksson
One little (unsigned long) left behind.
2016-03-08test: do not divide by zeroDan Gudmundsson
2016-03-02Merge branch 'ia/msantos/unsupported-protocols' into maintIngela Anderton Andin
* ia/msantos/unsupported-protocols: Skips any sockets with unsupported protocols.
2016-03-02Skips any sockets with unsupported protocols.Ingela Anderton Andin
Patch from end of PR 864 Fixes problem reported in the PR by jeckersb In this error case, a negative file descriptor is now saved at listensock[i], which leads to a buffer overflow later on at https://github.com/msantos/otp/blob/epmd-IPv6-node-reg2/erts/epmd/src/epmd_srv.c#L498 when calling FD_ISSET(listensock[i],&read_mask). To reproduce this: Completely disable IPv6 with ipv6.disable=1 on the kernel command line Build with fortified code (RHEL/CentOS default): CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fno-strict-aliasing'
2016-03-01Merge branch 'sverk/halt-INT_MIN' into maintSverker Eriksson
OTP-13251 * sverk/halt-INT_MIN: erts: Make erlang:halt() accept bignums as Status erts: Change erl_exit into erts_exit kernel: Remove calls to erl_exit
2016-03-01Merge branch 'msantos/epmd-IPv6-node-reg2/PR-864/OTP-13364' into maintIngela Anderton Andin
* msantos/epmd-IPv6-node-reg2/PR-864/OTP-13364: epmd: support IPv6 node registration
2016-02-25Merge branch 'egil/heart-callback/OTP-13250' into maintBjörn-Egil Dahlberg
2016-02-24erts: Make erlang:halt() accept bignums as StatusSverker Eriksson
Just mask away the high bits to get a more tolerant erlang:halt that behaves the same on 32 and 64 bit architectures.
2016-02-24erts: Change erl_exit into erts_exitSverker Eriksson
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).
2016-02-24Merge branch 'rickard/proc-not-running/OTP-13365' into maintRickard Green
* rickard/proc-not-running/OTP-13365: Do not wait for main lock when looking up process not running
2016-02-24Update preloaded moduleHans Bolinder
2016-02-23Do not wait for main lock when looking up process not runningRickard Green
2016-02-23typosSverker Eriksson
2016-02-22Merge branch 'rickard/dw-cmpxchg-clang/OTP-13336' into maintRickard Green
* rickard/dw-cmpxchg-clang/OTP-13336: Improve cmpxchg8b/cmpxchg16b inline asm
2016-02-22Merge branch 'rickard/gcc5-pic-cmpxchg8b/OTP-13326' into maintRickard Green
* rickard/gcc5-pic-cmpxchg8b/OTP-13326: Improve cmpxchg8b inline asm configure test
2016-02-22Merge branch 'sverk/proc-lock-check-fix' into maintSverker Eriksson
* sverk/proc-lock-check-fix: erts: Fix lock checker for process locks
2016-02-22Fix a few dialyzer warningsHans Bolinder
2016-02-19Merge branch 'rickard/rq-state-bug/OTP-13298' into maintRickard Green
* rickard/rq-state-bug/OTP-13298: Fix bug causing run-queue mask to become inconsistent
2016-02-18erts: Fix lock checker for process locksSverker Eriksson
Do lock order check *before* trying to seize lock... duh!
2016-02-18Improve cmpxchg8b/cmpxchg16b inline asmRickard Green
Clang didn't like that ecx/rcx was mapped to input and output variables of different types.
2016-02-18Merge branch 'sverk/nif-test-cuddle' into maintSverker Eriksson
* sverk/nif-test-cuddle: erts: Fix wobbling test failure in nif_SUITE
2016-02-18Merge branch 'msantos/ms/typo-windows-build-script' into maintHenrik Nord
* msantos/ms/typo-windows-build-script: Fix typo in Windows build scripts OTP-13337
2016-02-17Improve cmpxchg8b inline asm configure testRickard Green
2016-02-16Update preloaded erts_internal.beamBjörn-Egil Dahlberg
2016-02-16heart: Remove dead codeBjörn-Egil Dahlberg
2016-02-16erts: Add BIF erts_internal:system_check/1Björn-Egil Dahlberg
This commit implements erts_internal:system_check(schedulers) with the intent of a basic responsiveness test check of the schedulers.
2016-02-12erts: Fix wobbling test failure in nif_SUITESverker Eriksson
ResA may have been GC'd after its last use.
2016-02-10epmd: support IPv6 node registrationMichael Santos
Allow IPv6 nodes to register with and query epmd. On systems with IPv6 support: * epmd listens on both the IPv4 and IPv6 ANY or loopback sockets * the epmd cli client connects to epmd over the IPv6 loopback * distributed nodes started with "-proto_dist inet6_tcp" will register with epmd over IPv6 To work on IPv6 capable systems that have IPv6 support disabled, epmd ignores errors opening the socket if the protocol is not supported. Similarly, the epmd client will fall back to IPv4 if the IPv6 socket is not available. Update the minimum supported version of Windows to Windows Vista to support IPv6.
2016-02-08Merge branch 'sverk/hipe-line-table-bug/OTP-13282' into maintSverker Eriksson
* sverk/hipe-line-table-bug/OTP-13282: erts: Fix bug concerning line information for hipe modules
2016-02-08Merge branch 'sverk/proc-exiting-timer-race/OTP-13245' into maintSverker Eriksson
* sverk/proc-exiting-timer-race/OTP-13245: erts: Fix race between receive timeout and exit signal
2016-02-04Fix bug causing run-queue mask to become inconsistentRickard Green
2016-02-04Merge branch 'binarin/epmd-race' into maintZandra
* binarin/epmd-race: Prevent down nodes going undetected in epmd OTP-13301
2016-02-03Merge branch 'lukas/erts/enomem_no_abort/OTP-13292' into maintLukas Larsson
* lukas/erts/enomem_no_abort/OTP-13292: erts: When erts_alloc fails, the emulator no longer aborts