aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2012-03-30 16:31:26 +0200
committerSverker Eriksson <[email protected]>2012-03-30 16:31:26 +0200
commitaa257fbe5248a054e3c3b660efe6013d9e52bc70 (patch)
treef5dd602a06c74705686d6305e723c9a26765ef84
parent7c052e0dcff8eada390264fa340a88125eedab4e (diff)
parent73e6d0f2b775e9ff8d65ccdb2dfbef2cb211e91a (diff)
downloadotp-aa257fbe5248a054e3c3b660efe6013d9e52bc70.tar.gz
otp-aa257fbe5248a054e3c3b660efe6013d9e52bc70.tar.bz2
otp-aa257fbe5248a054e3c3b660efe6013d9e52bc70.zip
Merge branch 'sverk/proc-race-leak/OTP-10041' into maint
* sverk/proc-race-leak/OTP-10041: erts: Fix memory leak caused by race on exiting process
-rw-r--r--erts/emulator/beam/erl_process_lock.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_process_lock.h b/erts/emulator/beam/erl_process_lock.h
index 97e554914e..8dbdaccc68 100644
--- a/erts/emulator/beam/erl_process_lock.h
+++ b/erts/emulator/beam/erl_process_lock.h
@@ -958,8 +958,6 @@ erts_pid2proc_opt(Process *c_p,
if (flags & ERTS_P2P_FLG_TRY_LOCK)
proc = ERTS_PROC_LOCK_BUSY;
else {
- if (flags & ERTS_P2P_FLG_SMP_INC_REFC)
- proc->lock.refc++;
#ifdef ERTS_ENABLE_LOCK_COUNT
erts_lcnt_proc_lock_unaquire(&proc->lock, lcnt_locks);
#endif
@@ -969,6 +967,8 @@ erts_pid2proc_opt(Process *c_p,
pid_need_locks,
pix_lock,
flags);
+ if (proc && (flags & ERTS_P2P_FLG_SMP_INC_REFC))
+ proc->lock.refc++;
}
}
}