2012-02-28 22 views
0

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をインポートすると、この問題が発生しないことがわかりました。この問題を解決するための助けがあれば幸いです。

答えて

2

これは関連していないかもしれませんが、h5pyとlibjhdf5(Javaコードはjpypeを使用して呼び出されていました)を使用しようとすると、いくつかの奇妙な問題が発生しました。 https://bugs.launchpad.net/openquake/+bug/882637

これは直接役立たないかもしれませんが、この特定のバグは特定のバージョンのlibhdf5を使用して再現可能であったことを指摘します。 Ubuntu 11.04では、デフォルトのh5py、libjhdf、およびlibhdfパッケージを使用してこの問題が発生しました。私の同僚の一人は、別のディストリビューション(そして別のパッケージ)を使用していましたが、この問題はありませんでした。

短いストーリー、どのOS、バージョン、パッケージを使用していますか?パッケージにバグがある可能性があります。エラーを再現するコードサンプルも役立ちます。

+0

私はそれが同じ問題だと思います。私は別のインストールでそれを試して、それは正常に動作します。私の現在のシステム情報は、Ubuntu 11.04、カーネル2.6.38-13-generic x86_64、hdf5:1.8.4(ローカルビルド)、h5py 1.3.1(pip経由でビルド)です。 – subhacom

関連する問題