Commit 3658c020 authored by simonmar's avatar simonmar
Browse files

[project @ 2002-01-22 13:54:23 by simonmar]

Deadlock is now an exception instead of a return status from
rts_evalIO().

The current behaviour is as follows, and can be changed if necessary:
in the event of a deadlock, the top main thread is taken from the main
thread queue, and if it is blocked on an MVar or an Exception (for
throwTo), then it receives a Deadlock exception.  If it is blocked on
a BLACKHOLE, we instead send it the NonTermination exception.  Note
that only the main thread gets the exception: it is the responsibility
of the main thread to unblock other threads if necessary.

There's a slight difference in the SMP build: *all* the main threads
get an exception, because clearly none of them may make progress
(compared to the non-SMP situation, where all but the top main thread
are usually blocked).
parent 3dd01d69
......@@ -42,3 +42,5 @@ test "conc028" { myvtr("", "", "") }
test "conc029" { myvtr("", "", "") }
test "conc030" { myvtr("", "+RTS -K2M -RTS", "") }
test "conc031" { myvtr("", "", "") }
test "conc032" { myvtr("", "", "") }
test "conc033" { myvtr("", "", "") }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment