aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_process.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2012-08-02 17:33:46 +0200
committerRickard Green <[email protected]>2012-08-02 17:33:46 +0200
commita8eb459c1dd006ad73d5cb0f6b2a43067ec1fe5a (patch)
tree39b6cab8c3e07b0d82f6f51f005f3dcface61692 /erts/emulator/beam/erl_process.c
parent3730e28ad736f0538141d4474e0038a9cc48df71 (diff)
downloadotp-a8eb459c1dd006ad73d5cb0f6b2a43067ec1fe5a.tar.gz
otp-a8eb459c1dd006ad73d5cb0f6b2a43067ec1fe5a.tar.bz2
otp-a8eb459c1dd006ad73d5cb0f6b2a43067ec1fe5a.zip
Fix bug scheduling free processes
Diffstat (limited to 'erts/emulator/beam/erl_process.c')
-rw-r--r--erts/emulator/beam/erl_process.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index ba46b9011d..e7c8e0541f 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -4547,7 +4547,9 @@ schedule_process(Process *p, erts_aint32_t state, int active_enq)
while (1) {
erts_aint32_t e;
n = e = a;
- ASSERT(!(a & ERTS_PSFLG_FREE));
+
+ if (a & ERTS_PSFLG_FREE)
+ return; /* We don't want to schedule free processes... */
n |= ERTS_PSFLG_ACTIVE;
if (!(a & (ERTS_PSFLG_SUSPENDED|ERTS_PSFLG_RUNNING)))
n |= ERTS_PSFLG_IN_RUNQ;