2012-02-28 3 views
0

pthread와 HDF5를 사용하는 Python 용 C++ 모듈을 작성하고 있습니다. 내 모듈은 H5F_ACC_EXCL 모드에서 HDF5 파일을 생성하므로 파일이 이미 존재할 때 실패합니다. HDF5는이 경우 스택 추적을 인쇄합니다. 이 모듈의 파이썬 C 인터페이스 함수는 하나의 스레드에서 실행되고 파일 생성은 다른 스레드에서 발생합니다. 일반적으로 모두 잘 작동하지만 내 모듈을 사용하여 스크립트에서 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 (jpype을 사용하여 Java 코드가 호출 됨)를 사용하는 동안 이상한 문제가 발생했습니다. 버그의 세부 사항은 다음과 같습니다. https://bugs.launchpad.net/openquake/+bug/882637

이것은 직접적으로 도움이되지는 않지만이 특정 버그는 특정 버전의 libhdf5를 사용하여 재현 할 수 있음을 지적합니다. 나는 기본 h5py, libjhdf 및 libhdf 패키지를 사용하여 우분투 11.04에서이 문제를 겪었습니다. 동료 중 한 명이 다른 배포판 (다른 패키지)을 사용하고 있었고이 문제는 없었습니다.

간략한 이야기로, 사용중인 OS, 버전 및 패키지는 무엇입니까? 패키지에 버그가있을 수 있습니다. 오류를 재현하는 코드 샘플도 도움이됩니다.

+0

같은 문제라고 생각합니다. 나는 다른 설치에서 그것을 시도하고 잘 작동합니다. 내 현재 시스템 정보는 다음과 같습니다. 우분투 11.04, 커널 : 2.6.38-13- 일반 x86_64, hdf5 : 1.8.4 (로컬 빌드 됨), h5py 1.3.1 (pip를 통해 빌드 됨). – subhacom

관련 문제