diff options
author | Björn-Egil Dahlberg <[email protected]> | 2010-02-10 17:10:20 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2010-02-10 17:10:20 +0000 |
commit | 3b56d82549d40fe1a28e2d3aad88e8c3671470f6 (patch) | |
tree | 4827060d912c3eb7385479a62bfaa608c650c19e /erts/emulator | |
parent | 64a697339414f424073c5b021285fddb0ff2d9da (diff) | |
download | otp-3b56d82549d40fe1a28e2d3aad88e8c3671470f6.tar.gz otp-3b56d82549d40fe1a28e2d3aad88e8c3671470f6.tar.bz2 otp-3b56d82549d40fe1a28e2d3aad88e8c3671470f6.zip |
OTP-8420 Fix processes in exiting status that are about to be scheduled,
to not be allowed to garbage collect.
Diffstat (limited to 'erts/emulator')
-rw-r--r-- | erts/emulator/beam/erl_process.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index bf08bc7a86..996806fc75 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -6286,7 +6286,9 @@ Process *schedule(Process *p, int calls) erts_check_my_tracer_proc(p); #endif - if ((FLAGS(p) & F_FORCE_GC) || (MSO(p).overhead > BIN_VHEAP_SZ(p))) { + if (!ERTS_PROC_IS_EXITING(p) + && ((FLAGS(p) & F_FORCE_GC) + || (MSO(p).overhead > BIN_VHEAP_SZ(p)))) { reds -= erts_garbage_collect(p, 0, p->arg_reg, p->arity); if (reds < 0) { reds = 1; |