[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