rts: Print correct stack size on stack overflow
authorBen Gamari <bgamari.foss@gmail.com>
Sat, 7 Sep 2013 21:53:34 +0000 (17:53 -0400)
committerAustin Seipp <austin@well-typed.com>
Fri, 25 Oct 2013 14:14:29 +0000 (09:14 -0500)
This requires that stackOverflow() in RtsUtils.c be passed a reference
to the current TSO. This requires a small change in libraries/base.

includes/Rts.h
rts/RtsUtils.c

index 96dc6a5..aca6c49 100644 (file)
@@ -250,7 +250,7 @@ void getWin32ProgArgv(int *argc, wchar_t **argv[]);
 void setWin32ProgArgv(int argc, wchar_t *argv[]);
 #endif
 
-void stackOverflow(void);
+void stackOverflow(StgTSO* tso);
 
 void stg_exit(int n) GNU_ATTRIBUTE(__noreturn__);
 
index b06b6af..185f1e8 100644 (file)
@@ -114,12 +114,12 @@ stgFree(void* p)
    -------------------------------------------------------------------------- */
 
 void
-stackOverflow(void)
+stackOverflow(StgTSO* tso)
 {
-  StackOverflowHook(RtsFlags.GcFlags.maxStkSize * sizeof(W_));
+    StackOverflowHook(tso->tot_stack_size * sizeof(W_));
 
 #if defined(TICKY_TICKY)
-  if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo();
+    if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo();
 #endif
 }