pthreads と HDF5 を使用する Python 用の C++ モジュールを作成しています。私のモジュールは H5F_ACC_EXCL モードで HDF5 ファイルを作成するため、ファイルが既に存在する場合は失敗します。この場合、HDF5 はスタック トレースを出力します。このモジュールの Python C インターフェイス関数は 1 つのスレッドで実行され、ファイルの作成は別のスレッドで行われます。通常はすべて正常に動作しますが、モジュールを使用してスクリプトに h5py をインポートすると、システムがデッドロック状態になります。ファイルを作成しようとするスレッドには、次のバックトレースがあります。
#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 をインポートしても、この問題は発生しないことがわかりました。この問題を解決するための助けをいただければ幸いです。