bundler を入れてみたんだが、以下のように stack があふれて正常に動かなかった。
peflags コマンドに -X オプションを与えて stack commit size を変更する必要があるとの事。
まず初期状態の確認。
次に割り当ての変更
注意点としては -x, -X オプションの後にスペースを空けてはいけない模様。
参考:
$ bundle update The source :rubygems is deprecated because HTTP requests are insecure. Please change your source to 'https://rubygems.org' if possible, or 'http://rubygems.org' if not. Fetching gem metadata from http://rubygems.org/......... Fetching additional metadata from http://rubygems.org/.. Resolving dependencies...Unfortunately, a fatal error has occurred. Please see the Bundler troubleshooting documentation at http://bit.ly/bundler-issues. Thanks! /home/kou/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/bundler-1.5.3/lib/bundler/friendly_errors.rb:40: stack level too deep (SystemStackError)ググってみたら、cygwin は stack を調整しないと足らないんだそうで、
peflags コマンドに -X オプションを与えて stack commit size を変更する必要があるとの事。
まず初期状態の確認。
$ peflags -v -x -X ~/.rbenv/versions/*/bin/ruby /home/kou/.rbenv/versions/2.0.0-p353/bin/ruby: coff(0x0027[+relocs_stripped,+executable_image,+line_nums_stripped,+bigaddr]) pe(0x8000[+tsaware]) stack reserve size : 2097152 (0x200000) bytes stack commit size : 4096 (0x1000) bytesreserve size が 2MiB で commit size が 4KiB のようだ。
次に割り当ての変更
$ peflags -v -x$[ 2*1024**2 ] -X$[ 128*1024 ] ~/.rbenv/versions/*/bin/ruby /home/kou/.rbenv/versions/2.0.0-p353/bin/ruby: coff(0x0027[+relocs_stripped,+executable_image,+line_nums_stripped,+bigaddr]) pe(0x8000[+tsaware]) stack reserve size : 2097152 (0x200000) bytes stack commit size : 131072 (0x20000) bytes上記のように reserve size は 2MiB のままで commit size を 128KiB にしてみたところ bundler は正常に動いた。
注意点としては -x, -X オプションの後にスペースを空けてはいけない模様。
参考:
- The Note of Ssaito's / 2013-02-26: bundle install error – stack level too deep
- stackoverflow / 2012-10-26: First ever bundle install, stack level too deep
- A mere hateblo / 2012-03-31: Cygwinでスタックサイズが足りなくなった
タグ
このページへのコメント
Cygwin64+Ruby2.1.1だと256*2048で動きました。
peflags -v -x$[ 2*1024**2 ] -X$[ 256*2048 ] ~/.rbenv/versions/*/bin/ruby
ありがとうございます。
助かりました。