Question

Je développe une application en C ++ pour vérifier les utilisateurs Courriels. Cette application utilise la bibliothèque vmime pour effectuer le traitement en rapport avec POP3 / IMAP / protocoles SMTP.

J'ai conçu l'application fonctionne en continu. Ainsi, il doit être assez stable!

Parfois, l'application cesse tout à coup donner cette étrange erreur:

ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.
Aborted

Je sais que vmime utilisations libgnutls et celle-ci utilise Libgcrypt.

Quelqu'un peut-il aider à résoudre cette erreur?

Pour plus d'informations, l'application est multi-thread. J'utilise vmime-0.9.0, libgcrypt-1.4.4, et libgnutls-2.8.5.

Merci beaucoup,

Était-ce utile?

La solution

Il semble que vmime a un bug lié à l'utilisation de gnutls dans le cas d'une application multi-thread. Je l'ai fait ce que la documentation de gnutls dit dans la page suivante:

http://www.gnu.org/software/ gnutls / manuel / gnutls.html # Multi_002dthreaded-applications

Je viens de l'ajouter la ligne:

gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);

avant la ligne:

gnutls_global_init();

dans le fichier:

net_tls_TLSSession.cpp

et vmime reconstruit. Bien sûr, j'inclus les fichiers d'en-tête nécessaires l'exemple montré dans la documentation.

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