aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_process.c
AgeCommit message (Collapse)Author
2018-06-28Merge branch 'john/erts/fix-process-schedule-after-free/OTP-15067/ERL-573' ↵Erlang/OTP
into maint-20 * john/erts/fix-process-schedule-after-free/OTP-15067/ERL-573: Don't enqueue system tasks if target process is in fail_state Fix erroneous schedule of freed/exiting processes Fix deadlock in run queue evacuation Fix memory leak of processes that died in the run queue
2018-06-14Don't enqueue system tasks if target process is in fail_stateJohn Högberg
The fail state wasn't re-checked in the state change loop; only the FREE state was checked. In addition to that, we would leave the task in the queue when bailing out which could lead to a double-free. This commit backports active_sys_enqueue from master to make it easier to merge onwards.
2018-06-14Fix erroneous schedule of freed/exiting processesJohn Högberg
When scheduled out, the process was never checked for the FREE state before rescheduling, which meant that a system task could sneak in and cause a double-free later on.
2018-06-05Merge branch 'sverker/system-profile-bug/OTP-15085' into maint-20Erlang/OTP
* sverker/system-profile-bug/OTP-15085: erts: Fix bug in system_profile
2018-05-21Fix deadlock in run queue evacuationJohn Högberg
2018-05-21Fix memory leak of processes that died in the run queueJohn Högberg
2018-05-18erts: Fix bug in system_profileSverker Eriksson
seen to cause redundant {profile,_,active,_,_} messages when process is terminating.
2018-02-22erts,observer: Add port-suspended pids to crash dumpSverker Eriksson
2018-02-20erts,observer: Add dirty schedulers to crash dumpSverker Eriksson
2017-11-10Merge branch 'maint-20' into maintIngela Anderton Andin
* maint-20: Updated OTP version Update release notes Update version numbers inets: Prepare for release inets: Add missing guard Avoid WindowBits=8 as per the manual Fix deflateParams on zlib 1.2.11 Ignore empty binaries in enif_inspect_iovec Emasculate writable binaries on entering an iovec Only apply EOS behaviors if there's pending data Stop assuming that all schedulers are managed when updating msacc
2017-11-07Merge branch 'sverker/systask-reqid-bug/OTP-14752' into maintSverker Eriksson
* sverker/systask-reqid-bug: erts: Fix bug in systask scheduling
2017-11-06erts: Fix bug in systask schedulingSverker Eriksson
when request id is an immediate. Ex: erlang:garbage_collect(P, [{async,Immediate}]). may crash the VM.
2017-10-25Stop assuming that all schedulers are managed when updating msaccJohn Högberg
This fixes statistics_SUITE:msacc when dirty schedulers are used during the test.
2017-10-12erts: Fix lock order when recv tracing trapped exit signalLukas Larsson
2017-09-12Merge branch 'sverker/valgrind-fixes/OTP-14609' into maintSverker Eriksson
* sverker/valgrind-fixes/OTP-14609: erts: Suppress false memory leak for dlerror [ct] Cleanup and rename purify related functions as valgrind Revert "remove unused purify functions" erts: Fix memory leak when sending to terminating port erts: Fix harmless use of uninitialised value
2017-09-11Fix unused-functions warningsLukas Larsson
2017-08-28erts: Fix harmless use of uninitialised valueSverker Eriksson
Conditional jump or move depends on uninitialised value(s): erts_msgq_update_internal_pointers:487 (-> 0x5A7AF9) [erl_message.h] erts_msgq_replace_msg_ref:496 (-> 0x5A7B4C) [erl_message.h] move_msgq_to_heap:2487 (-> 0x5AED4F) [erl_gc.c] minor_collection:1380 (-> 0x5AB3F4) [erl_gc.c]
2017-08-16Merge branch 'lukas/erts/fix_dirty_trace_message_flush/OTP-14538' into maintLukas Larsson
* lukas/erts/fix_dirty_trace_message_flush/OTP-14538: erts: Must have main lock when flushing trace messages
2017-07-06Merge branch 'john/erts/runtime-lcnt' into maintJohn Högberg
* john/erts/runtime-lcnt: Document rt_mask and add warnings about copy_save Add an emulator test suite for lock counting Break erts_debug:lock_counters/1 into separate BIFs Allow toggling lock counting at runtime Move lock flags to a common header Enable register_SUITE for lcnt builds Enable lcnt smoke test on all builds that have lcnt enabled Make lock counter info independent of the locks being counted OTP-14412 OTP-13170 OTP-14413
2017-07-06Allow toggling lock counting at runtimeJohn Högberg
The implementation is still hidden behind ERTS_ENABLE_LOCK_COUNT, and all categories are still enabled by default, but the actual counting can be toggled at will. OTP-13170
2017-06-15erts: Must have main lock when flushing trace messagesLukas Larsson
If we don't have the main lock, multiple threads may come in and do the flush at the same time which will lead to all kinds of strang problems.
2017-06-08Merge branch 'rickard/purge-hibernated-20'Rickard Green
* rickard/purge-hibernated-20: Update testcase to check that purge handle hibernated process correct Do not GC hibernated process from other processes Fix check_process_code() on hibernated process
2017-06-07Merge branch 'rickard/purge-hibernated-19/ERIERL-24/OTP-14444' into maint-19Erlang/OTP
* rickard/purge-hibernated-19/ERIERL-24/OTP-14444: Update testcase to check that purge handle hibernated process correct Do not GC hibernated process from other processes Fix check_process_code() on hibernated process
2017-06-01Merge branch 'rickard/purge-hibernated-19' into rickard/purge-hibernated-20Rickard Green
* rickard/purge-hibernated-19: Do not GC hibernated process from other processes Fix check_process_code() on hibernated process Conflicts: erts/emulator/beam/beam_bif_load.c erts/emulator/beam/erl_process.c erts/emulator/beam/erl_process.h
2017-06-01Merge branch 'rickard/purge-hibernated' into rickard/purge-hibernated-19Rickard Green
* rickard/purge-hibernated: Do not GC hibernated process from other processes Fix check_process_code() on hibernated process Conflicts: erts/emulator/beam/beam_bif_load.c erts/emulator/beam/erl_gc.c erts/emulator/beam/erl_process.h
2017-06-01Do not GC hibernated process from other processesRickard Green
2017-05-31Make sure that asynchronous replies are not lostBjörn Gustavsson
(First attempt to fix in 23f132d9ab776a.) If an synchronous GC was requested by calling: erlang:garbage_collect(Pid, [{async,Ref}]) the reply message could in certain circumstances be lost. The problem is that cleanup_sys_tasks() is never called if there are dirty tasks, but no other active system tasks. Also shorten the long waiting times in the test case binary_SUITE:trapping/1 to make it much more likely that the GC have not already finished when the process is killed.
2017-05-29erl_process.c: Add more assertions in process terminationBjörn Gustavsson
Before terminating a process, add assertions to make sure that all queues for system tasks have been emptied.
2017-05-29Make sure that asynchronous replies are not lostBjörn Gustavsson
If an synchronous GC was requested by calling: erlang:garbage_collect(Pid, [{async,Ref}]) the reply message could in certain circumstances be lost. The problem is in cleanup_sys_tasks() in erl_process.c. If there were at least one dirty task, only the first dirty task would be cleaned up. All other systems tasks would not be cleaned up (that is, no replies would be sent to other processes waiting for the tasks to finish).
2017-05-19Merge branch 'rickard/ds-runqs'Rickard Green
OTP-14152 * rickard/ds-runqs: Make statistics/1 aware of dirty run-queues and tasks
2017-05-19Make statistics/1 aware of dirty run-queues and tasksRickard Green
2017-05-16Merge pull request #1436 from garazdawi/lukas/erts/remove_unused_functionsLukas Larsson
erts: Remove old unused functions
2017-05-16erts: Remove old unused functionsLukas Larsson
The functions have been found using: https://github.com/caolanm/callcatcher
2017-05-04Update copyright yearRaimo Niskanen
2017-04-27Merge branch 'rickard/ds-stack-size'Rickard Green
OTP-14380 * rickard/ds-stack-size: Suggested stack size options for dirty schedulers
2017-04-24Merge branch 'lukas/erts/fix_non-smp_scheduler_data_init/OTP-14152'Lukas Larsson
* lukas/erts/fix_non-smp_scheduler_data_init/OTP-14152: erts: Initialize esdp->type in non-smp to normal
2017-04-21Merge branch 'rickard/timer-improvements'Rickard Green
OTP-14356 * rickard/timer-improvements: Fix of later timer wheel Minimum timeout position in each timer wheel Manage timers to trigger at once in a slot similar to other timers Introduce timer slot range counters Timer wheel divided into a "soon wheel" and a "later wheel" Remove unnecessary cancel callback from timer-wheel timers Rearrange timer struct fields in order to simplify Use timer wheel for short BIF timers Use magic refs for BIF timers Remove accessor BIF timer implementation Fix aux-work timer implementation
2017-04-20erts: Initialize esdp->type in non-smp to normalLukas Larsson
The previous code worked through luck because the memory returned from erts_alloc was zero:ed and SCHED_NORMAL is 0. But if you run with +Meamin that is not always the case which is how this error was detected.
2017-04-20Merge branch 'lukas/erts/20_minor_fixes'Lukas Larsson
* lukas/erts/20_minor_fixes: erts: Rebuild etc executables if config.h changes erts: Fix new gcc warning in check io kernel: Add mem check to prim_file:large_write tc erts: Fix two compiler warnings on OS X erts: Fix erts_debug:df function info output erts: Get rid of some unused function warnings on os x
2017-04-18Remove unnecessary cancel callback from timer-wheel timersRickard Green
2017-04-18Use magic refs for BIF timersRickard Green
2017-04-18Remove accessor BIF timer implementationRickard Green
2017-04-18Fix aux-work timer implementationRickard Green
2017-04-12Merge branch 'rickard/ds-fixes'Rickard Green
* rickard/ds-fixes: Fix dirty GC implementation Fix multi-scheduling with only one normal scheduler Fix +SDPcpu
2017-04-11Suggested stack size options for dirty schedulersRickard Green
2017-04-11Merge branch 'rickard/sched_type_tests'Rickard Green
* rickard/sched_type_tests: Fix dirty scheduler type tests
2017-04-11Fix multi-scheduling with only one normal schedulerRickard Green
2017-03-28erts: Fix two compiler warnings on OS XLukas Larsson
2017-03-28erts: Get rid of some unused function warnings on os xLukas Larsson
2017-03-24Fix dirty scheduler type testsRickard Green
Old test for dirty schedulers didn't work with Visual C++