diff options
author | Lukas Larsson <[email protected]> | 2018-12-13 16:34:38 +0100 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2018-12-13 17:08:55 +0100 |
commit | 27ff974bfa155ad31dcdc338d7fecf36b08a0516 (patch) | |
tree | 13c02aedb0e3f51a5663e820d356206d9efef465 /erts/preloaded | |
parent | be749b4f83f3b3a2fa3bd8e5a3e5e28467b137b2 (diff) | |
download | otp-27ff974bfa155ad31dcdc338d7fecf36b08a0516.tar.gz otp-27ff974bfa155ad31dcdc338d7fecf36b08a0516.tar.bz2 otp-27ff974bfa155ad31dcdc338d7fecf36b08a0516.zip |
erts: Fix seq_trace:reset_trace dirty gc bug
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.
Diffstat (limited to 'erts/preloaded')
-rw-r--r-- | erts/preloaded/src/erlang.erl | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/erts/preloaded/src/erlang.erl b/erts/preloaded/src/erlang.erl index 1ed6b6b284..f37a3fc5db 100644 --- a/erts/preloaded/src/erlang.erl +++ b/erts/preloaded/src/erlang.erl @@ -2534,7 +2534,7 @@ subtract(_,_) -> %% These are deliberately not documented (internal_cpu_topology, term()) -> term(); (sequential_tracer, pid() | port() | {module(), term()} | false) -> pid() | port() | false; - (1,0) -> true. + (reset_seq_trace,true) -> true. system_flag(_Flag, _Value) -> erlang:nif_error(undefined). |