Pregunta

estoy desarrollando una aplicación en C ++ para comprobar los usuarios de cuentas de correo electrónico. Esta aplicación utiliza la biblioteca vmime para hacer el procesamiento relacionado con POP3 / IMAP / SMTP.

Me diseñado la aplicación para trabajar de forma continua. Por lo tanto, tiene que ser lo suficientemente estable!

A veces, la aplicación de repente deja de tomar este extraño error:

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

Sé que utiliza vmime libgnutls y éste usos Libgcrypt.

Puede cualquiera ayuda para resolver este error?

Para obtener más información, la aplicación es multi-hilo. Estoy usando vmime-0.9.0, 1.4.4 libgcrypt-y-libgnutls 2.8.5.

Muchas gracias,

¿Fue útil?

Solución

Parece que vmime tiene un error relacionado con el uso de gnutls en el caso de aplicaciones multi-hilo. Hice lo que la documentación de gnutls dice en la página siguiente:

http://www.gnu.org/software/ gnutls / / gnutls.html # Multi_002dthreaded-aplicaciones manuales

Yo sólo el agregado de la línea:

gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);

antes de la línea:

gnutls_global_init();

en el archivo:

net_tls_TLSSession.cpp

y vmime reconstruido. Por supuesto, he incluido los archivos de cabecera necesarios mostrado en el ejemplo de la documentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top