Segmentation fault
GCEインスタンスでDockerを立ち上げてOpenNMTを実行していたのですがSegmentation fault (core dumped)が出ました。
初めにOpenNMT, PyTorchあたりのエラーを疑ってたんですがDockerが原因で解決したので記録として残しておきます。
解決方
Dockerのオーバーコミットメント設定を変更する
ホストマシンで
sysctl vm.overcommit_memory
を確認して0なら
sysctl vm.overcommit_memory=1
に変更の上、新しく立ち上げたコンテナでプログラムを実行したら解決しました。
原因を探すことの難しさ
Segmentation fault in preprocess
OpeNMTのイシューで同様のエラーが出た人がいるんですが、開発者は「俺たちのエラーじゃない。PyTorchの実装が悪い」と説明してて「PyTorch Segmentation fault」でもググったところ、この問題は解決されてましたが、それ以前のDockerのエラーでした。GCE,Docker,フレームワークの上で実行されたプログラムはエラーの原因を探すことが難しいですね。