A mere hateblo

単なるはてブロです。

Cygwinでスタックサイズが足りなくなった

昨日、Cygwinのshがスタックが足りないなどと言い異常終了するようになった。エラーメッセージは記録し忘れたが、以下のリンク先にある「can't commit memory for stack」というのがそれ。
"cant commit memory for stack" error with perl

このエラーは初めて見たので対処方法がわからなく右往左往したが、結局peflagsコマンドを使い、/bin/shのスタックサイズを倍増することで対処できた。

具体的には、まず/bin/shの現在のスタックサイズを確認する:

% peflags -x /bin/sh
/bin/sh: stack reserve size      : 2097152 (0x200000) bytes

次に/bin/shのスタックサイズを倍の数値に設定する:

% peflags -x0x400000 /bin/sh
/bin/sh: stack reserve size      : 4194304 (0x400000) bytes

これにより冒頭の異常終了を回避できた。
正直スタックサイズをこんなに消費する方もどうかと思うが、対処しないと仕事が進まないので仕方なくこのようにした。