aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_load.h
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_load.h
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_load.h')
-rw-r--r--erts/emulator/beam/beam_load.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/erts/emulator/beam/beam_load.h b/erts/emulator/beam/beam_load.h
index 1200bb9c6f..9be5e14e40 100644
--- a/erts/emulator/beam/beam_load.h
+++ b/erts/emulator/beam/beam_load.h
@@ -124,7 +124,8 @@ int erts_is_module_native(BeamCodeHeader* code);
void erts_beam_bif_load_init(void);
struct erl_fun_entry;
void erts_purge_state_add_fun(struct erl_fun_entry *fe);
-Export *erts_suspend_process_on_pending_purge_lambda(Process *c_p);
+Export *erts_suspend_process_on_pending_purge_lambda(Process *c_p,
+ struct erl_fun_entry*);
/*
* Layout of the line table.