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 tun

entwarf 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,

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top