我正在用C++开发一个应用程序来检查用户的电子邮件帐户。此应用程序使用vmime库来执行与POP3/IMAP/SMTP协议相关的处理。
我将应用程序设计为连续工作。所以,它必须足够稳定!
有时,应用程序会突然停止给出这个奇怪的错误:
ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.
Aborted我知道vmime使用libgnutls,这个使用libgcrypt。
有人能帮助解决这个错误吗?
有关更多信息,该应用程序是多线程的。我使用的是vmime-0.9.0、libgcrypt-1.4.4和libgnutls-2.8.5。
非常感谢,
发布于 2010-10-21 22:19:20
在多线程应用程序的情况下,vmime似乎有一个与使用gnutls相关的bug。我按照下面页面中gnutls的文档所说的做了:
http://www.gnu.org/software/gnutls/manual/gnutls.html#Multi_002dthreaded-applications
我只是加了一行:
gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);在该行之前:
gnutls_global_init();在文件中:
net_tls_TLSSession.cpp并重建了vmime。当然,我还包含了文档示例中显示的所需的头文件。
https://stackoverflow.com/questions/3977488
复制相似问题