2016-12-01 3 views
3

HaskellStack ошибки переполнения пространства в Haskell с очень небольшой размер стека программы

main=main>>main 

терпит неудачу с

2mem: Stack space overflow: current size 33624 bytes. 
2mem: Use `+RTS -Ksize -RTS' to increase it. 

33k кажется весьма мала. OS (сверху) сообщает об общем использовании памяти 6G перед сбоем. Когда я скомпилирую программу с ghc -rtsopts 2mem.hs и запускаю ее с ./2mem +RTS -K32M, я получаю ту же ошибку.

Я использую ghc, версия 8.0.1 на MacOS 10.11.6.

Почему пространство стека настолько мало и почему не -K32M увеличить его?

+0

Это не имеет большого значения. Ваша программа будет взорвать стек независимо от того, как вы его запускаете. Это в основном то же самое, что и 'main = main', но позже создаст исключение' <> 'вместо переполнения стека. 33K - довольно большой стек для использования GHC. – dfeuer

+0

Указанный размер стека в сообщении неверен. Я думал, что это исправлено. –

+1

@ReidBarton: ошибка в ghc, может быть [этот] (https://ghc.haskell.org/trac/ghc/ticket/10445), хотя он отмечен как «фиксированный»? Кто-нибудь знаком с системой отслеживания ошибок ghc? Есть ли способ повторно открыть билет? – nimi

ответ

2

Это ошибка в GHC; указанный размер сообщения в сообщении неверен. См. https://ghc.haskell.org/trac/ghc/ticket/10445, и спасибо, что заметили, что на самом деле это не исправлено.