web-dev-qa-db-ja.com

プロセスは終了コード139で終了しました(シグナル11により中断:SIGSEGV)

Pythonスクリプト を実行しようとしていますが、次のエラーが表示されます。

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

完全なエラーメッセージは here にあります。

Linux Mint 18.1 Serena OSでpython 3.5.2を使用しています

誰かがこれがなぜ起こるのか、どうすれば解決できるのか教えてもらえますか?

20
Andre

SIGSEGVシグナルは、「 セグメンテーション違反 」または「セグメンテーション違反」を示します。多かれ少なかれ、これは、プロセスでマップされていないメモリアドレスの読み取りまたは書き込みに相当します。

これは、プログラムのバグを示しています。 Pythonプログラムでは、これはインタープリターまたは使用されている拡張モジュールのバグです(後者が最も一般的な原因です)。

問題を解決するには、いくつかのオプションがあります。 1つの選択肢は、問題を再現した最小限の自己完結型の完全な例を作成し、使用する拡張モジュールのメンテナーにバグレポートとして提出することです。

別のオプションは、原因を自分で追跡することです。 gdb は、Pythonおよび使用中のすべての拡張モジュールのデバッグビルドと同様に、そのような努力において価値のあるツールです。

Gdbをインストールしたら、それを使用してPythonプログラムを実行できます。

gdb --args python <more args if you want>

そして、gdbコマンドを使用して問題を追跡します。 runを使用すると、プログラムはクラッシュするまで実行され、他のgdbコマンドを使用して状態を検査できます。

13

別の考えられる原因(今日私が遭遇した)は、開いているファイルを読み書きしようとしていることです。この場合、ファイルを閉じてスクリプトを再実行するだけで問題が解決しました。

3

しばらくして、古いコンピューターでエラーが発生する新しいTensorFlowバージョンを実行していることを発見しました。 TensorFlowバージョンを1.4にダウングレードする問題を解決しました

3
Andre

この問題が発生すると、メモリの問題があることに気付きます。 PCを再起動して解決しました。

2
madogan

pythonライブラリを更新することで、この問題を解決しました。私の場合、それはscikit-learnでした:

pip install -U scikit-learn
0
Paddy