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,

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top