vmime,libgnutls和libgcrypt问题?断言失败了!
题
我正在开发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。
非常感谢,
解决方案
在多线程应用程序的情况下,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。当然,我在文档示例中包括了所需的标头文件。
不隶属于 StackOverflow