[GHC] #8604: Some stack/vmem limits (ulimit) combinations causing GHC to fail
GHC
ghc-devs at haskell.org
Tue Dec 10 13:07:01 UTC 2013
#8604: Some stack/vmem limits (ulimit) combinations causing GHC to fail
----------------------------------+----------------------------------
Reporter: clavin | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.6.3
Resolution: | Keywords:
Operating System: Other | Architecture: x86_64 (amd64)
Type of failure: Runtime crash | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets:
----------------------------------+----------------------------------
Comment (by int-e):
Replying to [comment:1 carter]:
> ghc allocates the stack on the heap, so this may be tripping a corner
case somehow...
There are two kinds of stacks. The STG stack (one per Haskell thread) is
indeed allocated on the heap, grown dynamically, and its maximum size is
governed by the '-K' RTS option. But each OS thread also has its own C
stack and the size of that is determined by the stack size resource limit
by default: ({{{createOSThread()}}} in {{{rts/posix/OSThreads.c}}} uses
{{{pthread_create()}}} with no specific thread attributes. Quoting {{{man
pthread_create}}}:
{{{
On Linux/x86-32, the default stack size for a new thread is 2
megabytes. Under the NPTL threading implementation, if the
RLIMIT_STACK soft resource limit at the time the program started has
any value other than "unlimited", then it determines the default stack
size of new threads.
}}}
Other implementations may differ.
I'm not sure whether or how this should be dealt with by ghc. In some
circumstances, a large C stack is required (depending on used foreign
libraries), and currently the soft stack resource limit is the knob to
turn in that case.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8604#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list