diff options
Diffstat (limited to 'rts/ThreadPaused.c')
-rw-r--r-- | rts/ThreadPaused.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/rts/ThreadPaused.c b/rts/ThreadPaused.c index 1f1d0afe58..e0e616aec4 100644 --- a/rts/ThreadPaused.c +++ b/rts/ThreadPaused.c @@ -219,6 +219,14 @@ threadPaused(Capability *cap, StgTSO *tso) frame = (StgClosure *)tso->stackobj->sp; while ((P_)frame < stack_end) { + if (*(P_)frame & 1) { + nat frame_size = stack_frame_sizeW(frame); + weight_pending += frame_size; + frame = (StgClosure *)((StgPtr)frame + frame_size); + prev_was_update_frame = rtsFalse; + continue; + } + info = get_ret_itbl(frame); switch (info->i.type) { |