summaryrefslogtreecommitdiff
path: root/rts/RtsUtils.c
diff options
context:
space:
mode:
authorAustin Seipp <aseipp@pobox.com>2013-09-08 02:08:45 -0500
committerAustin Seipp <aseipp@pobox.com>2013-09-08 03:55:06 -0500
commitd85044f6b201eae0a9e453b89c0433608e0778f0 (patch)
tree2ef70aed38ac9ee9b0c7dc3f1cdf8a8e79091c11 /rts/RtsUtils.c
parentc73d372bfebb5acee45e196d4e8694b656c7fd82 (diff)
downloadhaskell-d85044f6b201eae0a9e453b89c0433608e0778f0.tar.gz
Default to infinite stack size (#8189)
When servicing a stack overflows, only throw an exception to the given thread if the user explicitly set a max stack size, using +RTS -K. Otherwise just service it normally and grow the stack. In case we actually run out of *heap* (stack chuncks are allocated on the heap), then we need to bail by calling the stackOverflow() hook and exit immediately. Authored-by: Ben Gamari <bgamari.foss@gmail.com> Signed-off-by: Austin Seipp <aseipp@pobox.com>
Diffstat (limited to 'rts/RtsUtils.c')
-rw-r--r--rts/RtsUtils.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/rts/RtsUtils.c b/rts/RtsUtils.c
index cb9002c361..604c7eed61 100644
--- a/rts/RtsUtils.c
+++ b/rts/RtsUtils.c
@@ -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
}