[GHC] #7653: incorrect handling of StackOverflow exception in the event manager
GHC
cvs-ghc at haskell.org
Sat Feb 2 15:33:17 CET 2013
#7653: incorrect handling of StackOverflow exception in the event manager
--------------------------+-------------------------------------------------
Reporter: nus | Owner:
Type: bug | Status: new
Priority: normal | Component: libraries/base
Version: 7.7 | Keywords:
Os: Linux | Architecture: Unknown/Multiple
Failure: Runtime crash | Blockedby:
Blocking: | Related:
--------------------------+-------------------------------------------------
Under high pressure of `registerTimeout`s the event manager thread's stack
overflows.
Testcases:
Shachaf initially reported this testcase on #ghc,
which is irreproducible locally:
{{{
import Control.Monad;
import Control.Concurrent
main = replicateM_ 1000000 (forkIO (threadDelay 1))
}}}
to be compiled and run as follows:
{{{
$ ghc -O2 -threaded Main.hs && time ./Main +RTS -N
}}}
Limiting the stack to the minimum helped to reproduce this locally, both
on x86 and x64:
{{{
import Control.Monad
import Control.Concurrent
main = replicateM_ 502 (forkIO (threadDelay 1)) -- 504 on x64
}}}
{{{
$ ghc -O2 -threaded -with-rtsopts="-N8 -K4" rplfrk.hs && ./rplfrk # -K8 on
x64
}}}
and this, though less deterministically:
{{{
import Control.Monad
import Control.Concurrent
main = replicateM_ 340 ( forkIO (threadDelay 1))
}}}
{{{
$ ghc -O2 -threaded -rtsopts repl2-x86.hs && ./repl2-x86 +RTS -N1 -K4
}}}
Error messages look like:
{{{
Stack space overflow: current size 4 bytes.
Use `+RTS -Ksize -RTS' to increase it.
repl2-x86: sendWakeup: invalid argument (Bad file descriptor)
[...repeated...]
repl2-x86: ioManagerDie: write: Bad file descriptor
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7653>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list