2010-10-20 72 views
2

我正在用C++開發一個應用程序來檢查用戶的電子郵件帳戶。此應用程序使用vmime庫來執行與POP3/IMAP/SMTP協議相關的處理。vmime,libgnutls和libgcrypt問題?斷言失敗!

我設計的應用程序連續工作。所以它必須足夠穩定!

有時,應用程序突然停止給這個奇怪的錯誤:

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。

非常感謝,

回答

2

看來vmime具有與多線程應用程序的情況下,使用GNUTLS的錯誤。 我做了什麼GNUTLS的文檔中的以下網頁說:

http://www.gnu.org/software/gnutls/manual/gnutls.html#Multi_002dthreaded-applications

我只是添加了一行:

gnutls_global_init(); 

gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); 

前行file:

net_tls_TLSSession.cpp 

並重建vmime。 當然,我包括文檔示例中顯示的所需頭文件。