diff options
author | Sverker Eriksson <[email protected]> | 2016-10-26 16:42:05 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2016-10-26 17:30:25 +0200 |
commit | 6408400fc1ca9609169f6a0450f1c4671aced91c (patch) | |
tree | f22a7379d38e3db9de31fe2c063801d89ff652c4 /erts/emulator/beam/beam_emu.c | |
parent | 23ecba248ade6e4f1a6ed58c6636598643916019 (diff) | |
download | otp-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.c | 2 |
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 { |