vmime、libgnutls、libgcryptの問題?アサーションは失敗しました!

StackOverflow https://stackoverflow.com/questions/3977488

  •  09-10-2019
  •  | 
  •  

質問

ユーザーのメールアカウントを確認するために、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を再構築しました。もちろん、ドキュメントの例に示されている必要なヘッダーファイルを含めました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top