X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FRaiseAsync.c;h=4a405e7b4909f23511e822873c50e3184670fe26;hp=c0cfd7b275126e02725ced2c224b9c93e9d79840;hb=37a3e47992bd46a3cf4f6a4c6fd5b9e187e88452;hpb=f9e1c2af8fdd112019a657e66b0cd685d8df66f6 diff --git a/rts/RaiseAsync.c b/rts/RaiseAsync.c index c0cfd7b..4a405e7 100644 --- a/rts/RaiseAsync.c +++ b/rts/RaiseAsync.c @@ -12,12 +12,15 @@ #include "Trace.h" #include "RaiseAsync.h" #include "SMP.h" -#include "Schedule.h" #include "Storage.h" +#include "Schedule.h" #include "LdvProfile.h" #include "Updates.h" #include "STM.h" #include "Sanity.h" +#if defined(mingw32_HOST_OS) +#include "win32/IOManager.h" +#endif static void raiseAsync (Capability *cap, StgTSO *tso, @@ -435,6 +438,9 @@ check_target: case BlockedOnRead: case BlockedOnWrite: case BlockedOnDelay: +#if defined(mingw32_HOST_OS) + case BlockedOnDoProc: +#endif if ((target->flags & TSO_BLOCKEX) && ((target->flags & TSO_INTERRUPTIBLE) == 0)) { blockedThrowTo(source,target); @@ -1014,6 +1020,7 @@ raiseAsync(Capability *cap, StgTSO *tso, StgClosure *exception, StgTRecHeader *trec = tso -> trec; StgTRecHeader *outer = stmGetEnclosingTRec(trec); stmAbortTransaction(cap, trec); + stmFreeAbortedTRec(cap, trec); tso -> trec = outer; break;