aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_process.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2012-03-07 16:16:44 +0100
committerSverker Eriksson <[email protected]>2012-03-07 16:16:44 +0100
commit16c60b70936070b0a568473c1d99466479446af2 (patch)
treee24322cea82c826b20cd9475fca77aaf3319ce41 /erts/emulator/beam/erl_process.c
parent869237370df8133f0252ad2f803fcd6a152d98e7 (diff)
downloadotp-16c60b70936070b0a568473c1d99466479446af2.tar.gz
otp-16c60b70936070b0a568473c1d99466479446af2.tar.bz2
otp-16c60b70936070b0a568473c1d99466479446af2.zip
erts: Fix assert failure when code_server exits "during" commit
Simplify by removing the support of abort_staging after end_staging.
Diffstat (limited to 'erts/emulator/beam/erl_process.c')
-rw-r--r--erts/emulator/beam/erl_process.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index a7707e9498..6c136571d5 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -1176,17 +1176,13 @@ handle_code_ix_activation(ErtsAuxWorkData *awdp, erts_aint32_t aux_work)
#ifdef DEBUG
awdp->code_ix_activation.code_stager = NULL;
#endif
+ erts_commit_staging_code_ix();
+ erts_release_code_write_permission();
erts_smp_proc_lock(p, ERTS_PROC_LOCK_STATUS);
if (!ERTS_PROC_IS_EXITING(p)) {
- erts_commit_staging_code_ix();
erts_resume(p, ERTS_PROC_LOCK_STATUS);
- erts_smp_proc_unlock(p, ERTS_PROC_LOCK_STATUS);
}
- else {
- erts_smp_proc_unlock(p, ERTS_PROC_LOCK_STATUS);
- erts_abort_staging_code_ix();
- }
- erts_release_code_write_permission();
+ erts_smp_proc_unlock(p, ERTS_PROC_LOCK_STATUS);
erts_smp_proc_dec_refc(p);
return aux_work & ~ERTS_SSI_AUX_WORK_CODE_IX_ACTIVATION;
}