vmime, libgnutls und libgcrypt Problem? Assertion failed!
Frage
Ich entwickle eine Anwendung in C ++ die Benutzer zu überprüfen, E-Mail-Konten. Diese Anwendung verwendet die vmime Bibliothek, die Verarbeitung zu POP3 / IMAP / SMTP-Protokolle.
Bezug zu tunentwarf ich die Anwendung kontinuierlich an der Arbeit. So hat es stabil genug sein!
Manchmal ist die Anwendung plötzlich nicht mehr diesen seltsamen Fehler geben:
ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.
Aborted
Ich weiß, dass vmime Verwendungen libgnutls und diese Anwendungen libgcrypt.
Kann jemand Hilfe in diesen Fehler zu lösen?
Für mehr Informationen, ist die Anwendung multi-threaded. Ich verwende vmime-0.9.0, libgcrypt-1.4.4 und libgnutls-2.8.5.
Vielen Dank,
Lösung
Es scheint, dass vmime hat einen Fehler im Zusammenhang mit der Verwendung von gnutls im Fall von Multi-Threaded-Anwendung. Ich tat, was die Dokumentation von gnutls sagt in der folgenden Seite:
http://www.gnu.org/software/ gnutls / manual / gnutls.html # Multi_002dthreaded-Anwendungen
ich habe soeben die Zeile:
gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
vor der Zeile:
gnutls_global_init();
in der Datei:
net_tls_TLSSession.cpp
und wieder aufgebauten vmime. Natürlich enthalten ich die benötigten Header-Dateien in der Dokumentation Beispiel gezeigt.