我正在开发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。当然,我在文档示例中包括了所需的标头文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top