pthreadsとHDF5を使用するPythonのC++モジュールを作成しています。私のモジュールはH5F_ACC_EXCLモードでHDF5ファイルを作成し、ファイルがすでに存在するときに失敗するようにします。この場合、HDF5はスタックトレースを出力します。 このモジュールのためのpython Cインタフェース関数は1つのスレッドで実行され、ファイルの作成は別のスレッドで行われます。 通常、すべて正常に動作しますが、私のモジュールを使用してスクリプトでh5pyをインポートすると、システムはデッドロック状態になります。ファイルを作成しようとするスレッドは、以下のバックトレースがありますh5pyが別のHDF5モジュールと併用するとデッドロックが発生する
#0 sem_wait() at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:86
#1 0x00000000004aed31 in PyThread_acquire_lock()
#2 0x0000000000495c74 in PyEval_RestoreThread()
#3 0x00000000004fd83a in PyGILState_Ensure()
#4 0x00007ffff02ca907 in __pyx_f_4h5py_3h5e_err_callback (__pyx_v_client_data=0xc5c470) at h5py/h5e.c:2045
#5 0x00007ffff5be1d62 in H5E_dump_api_stack() from /usr/lib/libhdf5.so.6
#6 0x00007ffff5be6a98 in H5Fcreate() from /usr/lib/libhdf5.so.6
#7 0x00007fffecb0cc46 in HDF5WriterBase::openFile (this=0x7fffe47efd68) at HDF5WriterBase.cpp:143
[ライン#7は私のモジュール内の関数についての通知] 私はPyTablesをインポートすると、この問題が発生しないことがわかりました。この問題を解決するための助けがあれば幸いです。
私はそれが同じ問題だと思います。私は別のインストールでそれを試して、それは正常に動作します。私の現在のシステム情報は、Ubuntu 11.04、カーネル2.6.38-13-generic x86_64、hdf5:1.8.4(ローカルビルド)、h5py 1.3.1(pip経由でビルド)です。 – subhacom