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