diff options
author | Simon Marlow <marlowsd@gmail.com> | 2012-11-01 13:02:57 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2012-11-01 13:04:42 +0000 |
commit | 225172e68980ce948e2fd00aa2d8a81657207525 (patch) | |
tree | 3c77dffaa6916f534928b21aa87260241e5c2de2 /rts/HeapStackCheck.cmm | |
parent | 8703bbcdcc9a47a29bccc4343dcea43868fbbeb6 (diff) | |
download | haskell-225172e68980ce948e2fd00aa2d8a81657207525.tar.gz |
Fix bug in stg_enter_checkbh
This was causing crashes in stm050(ghci), throwto001(ghci), and
possibly more.
Diffstat (limited to 'rts/HeapStackCheck.cmm')
-rw-r--r-- | rts/HeapStackCheck.cmm | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/rts/HeapStackCheck.cmm b/rts/HeapStackCheck.cmm index b3ae2648d9..fbceb7691a 100644 --- a/rts/HeapStackCheck.cmm +++ b/rts/HeapStackCheck.cmm @@ -221,7 +221,11 @@ INFO_TABLE_RET ( stg_enter_checkbh, RET_SMALL, { foreign "C" checkBlockingQueues(MyCapability() "ptr", CurrentTSO); - return (updatee); + + // we need to return updatee now. Note that it might be a pointer + // to an indirection or a tagged value, we don't know which, so we + // need to ENTER() rather than return(). + ENTER(updatee); } /* ----------------------------------------------------------------------------- |