aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2010-02-05 00:18:27 +0000
committerErlang/OTP <[email protected]>2010-02-05 00:18:27 +0000
commitfac0d934c19be55a135e9d914ccc1f09d247dbb4 (patch)
treeb110848d1c4c53fc20140539a453ca472bf10230
parentfad1a1523c0983c940376fb7a3381154cf688643 (diff)
downloadotp-fac0d934c19be55a135e9d914ccc1f09d247dbb4.tar.gz
otp-fac0d934c19be55a135e9d914ccc1f09d247dbb4.tar.bz2
otp-fac0d934c19be55a135e9d914ccc1f09d247dbb4.zip
Fixed erroneous assertion.
-rw-r--r--erts/emulator/beam/erl_port_task.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_port_task.c b/erts/emulator/beam/erl_port_task.c
index fff51b5f27..0b6bb0d8e9 100644
--- a/erts/emulator/beam/erl_port_task.c
+++ b/erts/emulator/beam/erl_port_task.c
@@ -601,6 +601,15 @@ erts_port_task_schedule(Eterm id,
break;
}
+#ifndef ERTS_SMP
+ /*
+ * When (!enq_port && !pp->sched.exe_taskq) is true in the smp case,
+ * the port might not be in the run queue. If this is the case, another
+ * thread is in the process of enqueueing the port. This very seldom
+ * occur, but do occur and is a valid scenario. Debug info showing this
+ * enqueue in progress must be introduced before we can enable (modified
+ * versions of these) assertions in the smp case again.
+ */
#if defined(HARD_DEBUG)
if (pp->sched.exe_taskq || enq_port)
ERTS_PT_CHK_NOT_IN_PORTQ(runq, pp);
@@ -612,6 +621,7 @@ erts_port_task_schedule(Eterm id,
ASSERT(pp->sched.prev || runq->ports.start == pp);
}
#endif
+#endif
if (!enq_port) {
ERTS_PT_CHK_PRES_PORTQ(runq, pp);