Skip to content

Do not copy stack after stack overflow

I am not sure, but I was doing a close reading of threadStackOverflow and noticed that after we throw a stack overflow exception, we fall through to the code responsible for allocating a new stack and copying the code over. An old iteration of the stack overflow code (removed in the commit cited below) did return after throwing the exception, and I did not see anything in the commit message suggesting the change was intentional. It seems sound to copy the stack; it will just become dead immediately.

The relevant commit:

commit f30d527344db528618f64a25250a3be557d9f287
Author: Simon Marlow <marlowsd@gmail.com>
Date:   Wed Dec 15 12:08:43 2010 +0000

    Implement stack chunks and separate TSO/STACK objects

Suggested (untested) patch:

diff --git a/rts/Threads.c b/rts/Threads.c
index 742119d..ccd6b17 100644
--- a/rts/Threads.c
+++ b/rts/Threads.c
@@ -533,6 +533,7 @@ threadStackOverflow (Capability *cap, StgTSO *tso)
 
         // Send this thread the StackOverflow exception
         throwToSingleThreaded(cap, tso, (StgClosure *)stackOverflow_closure);
+        return;
     }
 
 
Trac metadata
Trac field Value
Version 7.7
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Runtime System
Test case
Differential revisions
BlockedBy
Related
Blocking
CC simonmar
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information