aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_process.c
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2010-02-10 17:10:20 +0000
committerErlang/OTP <[email protected]>2010-02-10 17:10:20 +0000
commit3b56d82549d40fe1a28e2d3aad88e8c3671470f6 (patch)
tree4827060d912c3eb7385479a62bfaa608c650c19e /erts/emulator/beam/erl_process.c
parent64a697339414f424073c5b021285fddb0ff2d9da (diff)
downloadotp-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/beam/erl_process.c')
-rw-r--r--erts/emulator/beam/erl_process.c4
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;