vmime, libgnutls, e problema Libgcrypt? Asserzione non riuscita!
Domanda
Sto sviluppando un'applicazione in C ++ per controllare gli utenti account di posta elettronica. Questa applicazione utilizza la libreria vmime di fare l'elaborazione relativa a POP3 / IMAP / SMTP protocolli.
I progettato l'applicazione per lavoro continuo. Quindi, si deve essere abbastanza stabile!
A volte, l'applicazione smette improvvisamente di dare questo strano errore:
ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.
Aborted
Lo so che utilizza vmime libgnutls e questo usa Libgcrypt.
Qualcuno può aiutarmi a risolvere questo errore?
Per ulteriori informazioni, l'applicazione è multi-threaded. Sto usando vmime-0.9.0, Libgcrypt-1.4.4, e libgnutls-2.8.5.
Grazie mille,
Soluzione
sembra che vmime ha un problema legato all'uso di gnutls nel caso di applicazione multi-filettata. Ho fatto quello che la documentazione di gnutls dice nella seguente pagina:
http://www.gnu.org/software/ gnutls / / gnutls.html # Multi_002dthreaded-applicazioni manuali
Ho appena l'aggiunta la riga:
gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
prima della riga:
gnutls_global_init();
nel file:
net_tls_TLSSession.cpp
e ricostruito vmime. Naturalmente, ho incluso i file header necessari mostrato nell'esempio documentazione.