vmime, libgnutls y libgcrypt problema? ¡Error de aserción!
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,
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.