[解決済み】エラーです。Segmentation fault (コアダンプ)
質問
Pythonの初心者なのですが、変なエラーが出ます。
Segmentation fault (core dumped)
以下のコードを実行すると
class Workspace(QMainWindow, Ui_MainWindow):
""" This class is for managing the whole GUI `Workspace'.
Currently a Workspace is similar to a MainWindow
"""
def __init__(self):
#p= subprocess.Popen(["java -Xmx256m -jar bin/HelloWorld.jar"],cwd=r'/home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/', shell=True, stdout=subprocess.PIPE, bufsize= 4024)
try:
from Queue import Queue, Empty
except ImportError:
while True:
#from queue import Queue, Empty # python 3.x
print "error"
ON_POSIX = 'posix' in sys.builtin_module_names
def enqueue_output(out, queue):
for line in iter(out.readline, b''):
queue.put(line)
out.close()
p= Popen(["java -Xmx256m -jar bin/HelloWorld.jar"],cwd=r'/home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/',stdout=PIPE, shell=True, bufsize= 4024)
q = Queue()
t = threading.Thread(target=enqueue_output, args=(p.stdout, q))
#t = Thread(target=enqueue_output, args=(p.stdout, q))
t.daemon = True # thread dies with the program
t.start()
# ... do other things here
def myfunc(q):
while True:
try: line = q.get_nowait()
# or q.get(timeout=.1)
except Empty:
print('Vacio')
else: # got line
# ... do something with line
print line
thread = threading.Thread(target=myfunc, args=(q,))
thread.start()
この部分は、プログラムの標準出力から読み取っています。
myfunc
スレッドの外に出れば、うまくいきます。しかし、スレッドの中で実行すると、うまくいきません。
何か提案はありますか?
解決方法は?
"Segmentation fault (core dumped)"
でプログラムが終了するときにLinuxが表示する文字列です。
SIGSEGV
シグナルがあり、コアの作成が有効になっている場合。これはつまり
いくつか
プログラムがクラッシュしました。
実際にPythonを実行してこのエラーが出た場合、Pythonのインタープリタがクラッシュしたことを意味します。このようなことが起こる理由はほんの少しです。
-
C言語で書かれたサードパーティの拡張モジュールを使用していて、その拡張モジュールがクラッシュした。
-
直接または間接的に)ビルトインモジュール
ctypes
で、外部コードを呼び出すとクラッシュします。 -
Pythonのインストールに何か問題があるようです。
-
Pythonのバグを発見したので、報告する必要があります。
1つ目は、圧倒的に一般的なものです。もし、あなたの
q
がサードパーティの拡張モジュールのオブジェクトのインスタンスである場合、ドキュメントを見たくなるかもしれません。
C言語モジュールがクラッシュするのは、無効な、あるいは少なくとも一般的でない、テストされていないことを行っているからであることがよくあります。しかし、その意味であなたのせいであろうとなかろうと、それは問題ではありません。モジュール は は、クラッシュする代わりに、デバッグ可能な Python の例外を発生させます。ですから、あなたはおそらくその拡張機能を書いた人にバグを報告すべきです。しかしその間、バグが修正されて新しいバージョンが出るのを6ヶ月待つよりも、クラッシュの引き金になったことを突き止め、あなたがしたいことをする別の方法がないかどうか考える必要があります。あるいは、別のライブラリに変更することも必要です。
一方、どこかからデータを読み込んでプリントアウトしているので、Pythonインタプリタが行の
"Segmentation fault (core dumped)"
を読み、読み取ったものを忠実にプリントしています。その場合、上流にある他のプログラムがクラッシュしたと思われます。(誰もクラッシュしていない可能性もあります。もしあなたがウェブからこのページを取ってきてプリントアウトしたら、同じ行が表示されますよね?) あなたの場合、あなたのコメントからすると、クラッシュしたのはおそらくJavaプログラムでしょう。
もし、どのケースかわからない(プロセス管理やコアファイルの検査、Cレベルのデバッグを今日学びたくない)場合は、簡単にテストする方法があります。の後に
print line
という行を追加してください。
print "And I'm OK"
. の後に表示されている場合は
Segmentation fault
の行は、Pythonがクラッシュしたのではなく、他の誰かがクラッシュしたのです。もしそれが見えないなら、おそらくPythonがクラッシュしたのでしょう。
関連
-
pythonを使ったオフィス自動化コード例
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】fatal error: Python.h: そのようなファイルやディレクトリはありません
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない