Fix a bug in threadStackOverflow() (maybe #5214)
authorSimon Marlow <marlowsd@gmail.com>
Wed, 28 Mar 2012 10:45:39 +0000 (11:45 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Wed, 28 Mar 2012 13:45:14 +0000 (14:45 +0100)
commit734f1d484b12b785795b249b4116cfb4817ab55d
tree518e9027a151295be28bf4f3b04d221920bead72
parent59d6d62bc13dd0bca87cb30c96bf9d526dc88bfe
Fix a bug in threadStackOverflow() (maybe #5214)

If we overflow the current stack chunk and copy its entire contents
into the next stack chunk, we could end up with two UNDERFLOW_FRAMEs.
We had a special case to catch this in the case when the old stack
chunk was the last one (ending in STOP_FRAME), but it went wrong for
other chunks.

I found this bug while poking around in the core dump attached to
options and running the nofib suite: imaginary/wheel_sieve2 crashed
with +RTS -kc600 -kb300.

I don't know if this is the cause of all the symptoms reported in
rts/Threads.c