3

マルチスレッドのqt webkitアプリケーションで発生したsegfaultをデバッグしようとしています。gdbできれいに印刷する目的でpython-dbgをインストールしましたが、起動時に次のエラーが発生しました

python2.7-dbg node.py
Traceback (most recent call last):
  File "node.py", line 4, in <module>
    import msgpack
  File "/usr/lib/pymodules/python2.7/msgpack/__init__.py", line 3, in <module>
    from msgpack._msgpack import *
ImportError: /usr/lib/pymodules/python2.7/msgpack/_msgpack.so: undefined symbol: Py_InitModule4
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python2.7/dist-packages/apport/__init__.py", line 1, in <module>
    from apport.report import Report
  File "/usr/lib/python2.7/dist-packages/apport/report.py", line 20, in <module>
    import apport.fileutils
  File "/usr/lib/python2.7/dist-packages/apport/fileutils.py", line 22, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python2.7/dist-packages/apport/packaging_impl.py", line 20, in <module>
    import apt
  File "/usr/lib/python2.7/dist-packages/apt/__init__.py", line 21, in <module>
    import apt_pkg
ImportError: /usr/lib/python2.7/dist-packages/apt_pkg.so: undefined symbol: Py_InitModule4

Original exception was:
Traceback (most recent call last):
  File "node.py", line 4, in <module>
    import msgpack
  File "/usr/lib/pymodules/python2.7/msgpack/__init__.py", line 3, in <module>
    from msgpack._msgpack import *
ImportError: /usr/lib/pymodules/python2.7/msgpack/_msgpack.so: undefined symbol: Py_InitModule4

msgpack を使用しないバージョンのスクリプトを実行すると、同じ結果が得られます...

Traceback (most recent call last):
  File "scraper.py", line 2, in <module>
    from planeswalker import PlaneswalkerParser
  File "/var/www/rails_projects/MCPro.com/lib/planeswalker/planeswalker.py", line 2, in <module>
    from PyQt4.QtCore import *
ImportError: /usr/lib/python2.7/dist-packages/PyQt4/QtCore.so: undefined symbol: Py_InitModule4
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python2.7/dist-packages/apport/__init__.py", line 1, in <module>
    from apport.report import Report
  File "/usr/lib/python2.7/dist-packages/apport/report.py", line 20, in <module>
    import apport.fileutils
  File "/usr/lib/python2.7/dist-packages/apport/fileutils.py", line 22, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python2.7/dist-packages/apport/packaging_impl.py", line 20, in <module>
    import apt
  File "/usr/lib/python2.7/dist-packages/apt/__init__.py", line 21, in <module>
    import apt_pkg
ImportError: /usr/lib/python2.7/dist-packages/apt_pkg.so: undefined symbol: Py_InitModule4

Original exception was:
Traceback (most recent call last):
  File "scraper.py", line 2, in <module>
    from planeswalker import PlaneswalkerParser
  File "/var/www/rails_projects/MCPro.com/lib/planeswalker/planeswalker.py", line 2, in <module>
    from PyQt4.QtCore import *
ImportError: /usr/lib/python2.7/dist-packages/PyQt4/QtCore.so: undefined symbol: Py_InitModule4

どちらの場合も、Py_InitModule4 を探しています... Python の専門家のアイデアはありますか? コードは通常の python 2.7 で正常に実行されます (セグメンテーション違反を除く)。

gdb できれいに印刷する簡単な方法があれば、それも受け入れます。基本的にはPythonスタイルのスタックトレースを探しているだけです

4

1 に答える 1

2

少し突っついた後、過去のubuntu python-dbgライブラリにこれに関連するバグがあるように見えました。訴訟でバグを報告したところ、ドキュメントを読んでいないことがわかりました。-dbg バージョンのライブラリ (この場合は MySQLdb と PyQT4) をインストールする必要があります。

メッセージパックのバージョンがないので、その方法について別の質問を投稿しています

これは、参照のために無効とマークされたバグレポートですhttps://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1040914

于 2012-08-24T19:39:40.853 に答える