aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_emu.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2016-10-26 16:42:05 +0200
committerSverker Eriksson <[email protected]>2016-10-26 17:30:25 +0200
commit6408400fc1ca9609169f6a0450f1c4671aced91c (patch)
treef22a7379d38e3db9de31fe2c063801d89ff652c4 /erts/emulator/beam/beam_emu.c
parent23ecba248ade6e4f1a6ed58c6636598643916019 (diff)
downloadotp-6408400fc1ca9609169f6a0450f1c4671aced91c.tar.gz
otp-6408400fc1ca9609169f6a0450f1c4671aced91c.tar.bz2
otp-6408400fc1ca9609169f6a0450f1c4671aced91c.zip
erts: Avoid delayed fun undef race
Avoid suspending fun caller not just if purge is already done but also if purge of another module has started. Another purge of the same module again cannot happen as making current to old transition includes thread progress.
Diffstat (limited to 'erts/emulator/beam/beam_emu.c')
-rw-r--r--erts/emulator/beam/beam_emu.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c
index ef4cdf9d5a..3be5c0d24c 100644
--- a/erts/emulator/beam/beam_emu.c
+++ b/erts/emulator/beam/beam_emu.c
@@ -6555,7 +6555,7 @@ call_fun(Process* p, /* Current process. */
* and let it try again when the purge operation is
* done (may succeed or not).
*/
- ep = erts_suspend_process_on_pending_purge_lambda(p);
+ ep = erts_suspend_process_on_pending_purge_lambda(p, fe);
ASSERT(ep);
}
else {