vmime,libgnutls和libgcrypt问题?断言失败了!

时间:2010-10-20 11:55:19

标签: c++ vmime

我正在用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。

非常感谢,

1 个答案:

答案 0 :(得分:2)

似乎vmime有一个与多线程应用程序中使用gnutls相关的错误。 我在下面的页面中做了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。 当然,我在文档示例中包含了所需的头文件。