Question

J'écris un module C ++ pour Python qui utilise des pthreads et hdf5. Mon module crée des fichiers HDF5 en mode H5F_ACC_EXCL afin qu'il échoue lorsqu'un fichier est déjà présent. HDF5 imprime une trace de pile dans ce cas. Les fonctions d'interface Python C pour ce module sont exécutées dans un thread et la création de fichiers se produit dans une autre. Normalement, tout fonctionne bien, mais si j'importe H5Py dans un script à l'aide de mon module, le système entre dans une impasse. Le thread qui essaie de créer le fichier a le retour à pied suivant:

#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

Ligne # 7 s'informe de la fonction dans mon module] J'ai constaté que l'importation de pytables ne cause pas ce problème. Toute aide sur la résolution de ce problème sera très appréciée.

Était-ce utile?

La solution

Cela peut ne pas être lié, mais j'ai eu des problèmes étranges en essayant d'utiliser H5PY et LiBJHDF5 (le code Java était appelé en utilisant JPYPE). Voici quelques détails du bogue: https://bugs.launchpad.net/openquake/+bug/882637

Cela peut ne pas être directement utile, mais je soulignerai que ce bug particulier n'a été reproductible qu'à l'aide d'une version spécifique de LiBHDF5. J'ai eu ce problème sur Ubuntu 11.04 en utilisant les packages par défaut H5PY, LiBJHDF et LiBHDF. Un de mes collègues était d'utiliser une distribution différente (et un ensemble différent) et il n'avait pas ce problème.

Pour faire court, quel système d'exploitation, la version et les packages utilisez-vous? Il est possible que le package ait un bogue. Des échantillons de code pour reproduire l'erreur seraient également utiles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top