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には、マルチスレッドアプリケーションの場合のGNUTLの使用に関連するバグがあるようです。 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