aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
AgeCommit message (Collapse)Author
2019-02-01erts: Remove dead ERTS_MAGIC_REF_BIF_TIMERS codeLukas Larsson
Using magic refs for big timers caused too large a stress on the off_heap GC implementation to be viable, so it was never enable. The code is now broken because of other changes to we might as well remove it.
2019-01-30erts: Fix compiler warning for IS_SSMALLSverker Eriksson
"shift count negative or too big, undefined behavior"
2019-01-30Fix bug in binary:encode_unsigned causing a read of uninitialized memoryKjell Winblad
The bug could be seen by running the test that is added by this commit in a valgrind enabled emulator. Co-authored-by: John Högberg <[email protected]>
2019-01-28erts: Add magic port control numbersSverker Eriksson
to increase the probablity of a nice badarg from erlang:port_control.
2019-01-28Add -ztma option for enabling tuple callsRichard Carlsson
2019-01-28Reinstate tuple calls support in the beam emulatorRichard Carlsson
This reverts commit f2b332186a for beam_emu.c only, to enable an upgrade path for existing beam code compiled under OTP 20 with parameterized modules.
2019-01-24Merge branch 'lukas/erts/scheduler-pollset-fixes/OTP-15538' into maint-21Erlang/OTP
* lukas/erts/scheduler-pollset-fixes/OTP-15538: erts: Fix getting of poll events on linux >= 4.15.0 erts: Use reduction based polling for starved poll-set erts: Fix pollset test cases
2019-01-24Merge branch 'lukas/erts/fix_spawn_driver_early_close/OTP-15537' into maint-21Erlang/OTP
* lukas/erts/fix_spawn_driver_early_close/OTP-15537: erts: Fix too early close of spawn driver fd
2019-01-24Merge branch 'lukas/erts/fix_inet_multitimer_cleanup/OTP-15536' into maint-21Erlang/OTP
* lukas/erts/fix_inet_multitimer_cleanup/OTP-15536: erts: Fix cleanup of the inet MultiTimer
2019-01-23Merge branch 'lukas/erts/set_logger_process/OTP-15375' into maintLukas Larsson
* lukas/erts/set_logger_process/OTP-15375: erts: Fix type of system_logger variable
2019-01-23erts: Fix type of system_logger variableLukas Larsson
2019-01-23Merge branch 'lukas/erts/scheduler-pollset-fixes/OTP-15538' into maintLukas Larsson
* lukas/erts/scheduler-pollset-fixes/OTP-15538: erts: Fix getting of poll events on linux >= 4.15.0 erts: Use reduction based polling for starved poll-set erts: Fix pollset test cases
2019-01-23Merge branch 'lukas/erts/fix_spawn_driver_early_close/OTP-15537' into maintLukas Larsson
* lukas/erts/fix_spawn_driver_early_close/OTP-15537: erts: Fix too early close of spawn driver fd
2019-01-23Merge branch 'lukas/erts/fix_inet_multitimer_cleanup/OTP-15536' into maintLukas Larsson
* lukas/erts/fix_inet_multitimer_cleanup/OTP-15536: erts: Fix cleanup of the inet MultiTimer
2019-01-22erts: Fix cleanup of the inet MultiTimerLukas Larsson
2019-01-21erts: Fix getting of poll events on linux >= 4.15.0Lukas Larsson
2019-01-18erts: Use reduction based polling for starved poll-setLukas Larsson
When the schedulers never go to sleep (and thus never polls) it may be that the fds in schedulers poll-sets are never polled. Before this commit, this was solved by starting a timer when an overload was detected. This had issues as overloads were not always detected in time. So this commit reverts to the pre OTP-21 behaviour so keep a global counter makes that the poll is called when it should.
2019-01-18erts: Fix too early close of spawn driver fdLukas Larsson
2019-01-16Merge branch 'rickard/dirty_scheduler_collapse/OTP-15509' into maint-20Erlang/OTP
* rickard/dirty_scheduler_collapse/OTP-15509: Fix bug causing dirty scheduler sleeper list inconsistency
2019-01-16Merge branch 'rickard/dirty_scheduler_collapse/maint-21/OTP-15509' into maintRickard Green
* rickard/dirty_scheduler_collapse/maint-21/OTP-15509: Fix bug causing dirty scheduler sleeper list inconsistency
2019-01-15Merge branch 'rickard/dirty_scheduler_collapse/maint-21/OTP-15509' into maint-21Erlang/OTP
* rickard/dirty_scheduler_collapse/maint-21/OTP-15509: Fix bug causing dirty scheduler sleeper list inconsistency
2019-01-15Merge branch 'lukas/erts/spawn_opt_max_heap_tc_fix' into maintLukas Larsson
* lukas/erts/spawn_opt_max_heap_tc_fix: erts: Fix process_SUITE:max_heap tests
2019-01-15erts: Remove dead gdb functions from codeLukas Larsson
2019-01-15erts: Make sure to take main lock when dumping proc infoLukas Larsson
If the main lock is not taken then any process running on a dirty scheduler may cause all kinds of problems.
2019-01-15Merge branch 'lukas/erts/set_logger_process/OTP-15375' into maintLukas Larsson
* lukas/erts/set_logger_process/OTP-15375: Update preloaded modules erts: Add erlang:system_flag(system_logger,_)
2019-01-11Merge branch 'rickard/dirty_scheduler_collapse/OTP-15509' into ↵Rickard Green
rickard/dirty_scheduler_collapse/maint-21/OTP-15509 * rickard/dirty_scheduler_collapse/OTP-15509: Fix bug causing dirty scheduler sleeper list inconsistency
2019-01-11Fix bug causing dirty scheduler sleeper list inconsistencyRickard Green
2019-01-10erts: Add erlang:system_flag(system_logger,_)Lukas Larsson
This flag allows logger and other components to set the process which log messages from ERTS are to be sent.
2019-01-10Fix passing large integers as base to integer_to_X/2John Högberg
I noticed this seconds after merging... :(
2019-01-10Implement integer_to_list/2 and integer_to_binary/2 as CIFsStanislav Mayorov
This makes them roughly as fast as integer_to_list/1 and integer_to_binary/1.
2019-01-10Accept base in all integer-printing functionsStanislav Mayorov
2019-01-09Merge branch 'john/erts/prim_file-init-restart/OTP-15495/ERL-821' into maintJohn Högberg
* john/erts/prim_file-init-restart/OTP-15495/ERL-821: Remove an unused variable Spawn prim_file helper as a system process
2019-01-08Remove an unused variableJohn Högberg
2019-01-07erts: Fix process_SUITE:max_heap testsLukas Larsson
Make sure to flush all queued emulator logger messages before starting the test. The trap_exit_badarg could sometimes leave messages and since the handler and messages now are handled in different processes this becomes a problem.
2019-01-07erts: Fix pollset test casesLukas Larsson
2019-01-07Spawn prim_file helper as a system processJohn Högberg
2018-12-28Merge branch 'sverker/big-band-bug/ERL-804/OTP-15487' into maint-20Erlang/OTP
* sverker/big-band-bug/ERL-804/OTP-15487: erts: Fix bug in 'band' of two negative numbers, one big
2018-12-21erts: Fix persistent_term testcasesLukas Larsson
2018-12-21Merge branch 'lukas/erts/inet_pktopts_old_linux/OTP-15494' into maintLukas Larsson
* lukas/erts/inet_pktopts_old_linux/OTP-15494: erts: Fix inet pktopts on very old linux kernels
2018-12-20Merge branch 'sverker/big-band-bug/ERL-804/OTP-15487' into maint-21Erlang/OTP
* sverker/big-band-bug/ERL-804/OTP-15487: erts: Fix bug in 'band' of two negative numbers, one big
2018-12-20Merge branch 'sverker/fix-atomics-get-large-unsigned/PR-2061/OTP-15486' into ↵Erlang/OTP
maint-21 * sverker/fix-atomics-get-large-unsigned/PR-2061/OTP-15486: erts: Fix possible heap corruption getting atomics
2018-12-20Merge branch 'lukas/erts/fix-seq_trace-reset_trace/OTP-15490' into maintLukas Larsson
* lukas/erts/fix-seq_trace-reset_trace/OTP-15490: erts: Fix seq_trace:reset_trace dirty gc bug erts: Use sys_memcpy in copy_one_frag
2018-12-18Merge branch 'sverker/big-band-bug/ERL-804/OTP-15487' into maintSverker Eriksson
* sverker/big-band-bug/ERL-804/OTP-15487: erts: Fix bug in 'band' of two negative numbers, one big
2018-12-18Merge branch 'sverker/fix-atomics-get-large-unsigned/PR-2061/OTP-15486' into ↵Sverker Eriksson
maint * sverker/fix-atomics-get-large-unsigned/PR-2061/OTP-15486: erts: Fix possible heap corruption getting atomics
2018-12-18Merge branch 'sverker/erts/prim_file-perm-own-bigendian/OTP-15485' into maintSverker Eriksson
* sverker/erts/prim_file-perm-own-bigendian/OTP-15485: erts: Fix warning and potential big-endian-bug in prim_file
2018-12-17erts: Fix bug in 'band' of two negative numbers, one bigSverker Eriksson
Similar bug as for bxor fixed by abc4fd372d476821448dfb9 Ex: 1> io:format("~.16B\n", [-16#1110000000000000000 band (-1)]). -1120000000000000000 Wrong result for (-X bsl WS) band -Y. where X is any positive integer WS is erlang:system_info(wordsize)*8*N where N is 1 or larger Y is any positive integer smaller than (1 bsl WS) Fix: The subtraction of 1 (for 2-complement conversion) must be carried along all the way to the last words.
2018-12-14Merge branch 'lukas/erts/fix_lit_msg_copy_in_gc' into maintLukas Larsson
* lukas/erts/fix_lit_msg_copy_in_gc: erts: Use ptr_val for pointer in gc msg copy
2018-12-13erts: Fix possible heap corruption getting atomicsTomas Abrahamsson
Due to comparison as a signed integer, when getting an unsigned atomic in the range 2^63-1..2^64-1 (when the most significant bit was set), the heap could get corrupted when the integer was retrieved: hsz would get set to zero, but the code proceeded to build a bignum. Steps to reproduce (at least on x86_64): $ erl 1> A = atomics:new(1,[{signed,false}]). 2> atomics:put(A,1,18446744073709551615). 3> atomics:get(A,1). At the last step, the shell would print some garbage and hang.
2018-12-13erts: Fix warning and potential big-endian-bug in prim_fileSverker Eriksson
for set_permission and set_owner.
2018-12-13erts: Fix seq_trace:reset_trace dirty gc bugLukas Larsson
When seq_trace:reset_trace could be called while a process was doing a dirty GC. This triggered a race where all signals was moved to the internal signal queue during the GC which in turn caused the a heap overrun problem. This fix makes it so that the main and msgq lock are taken before the clear. This will make sure that we are allowed to do the clear.