Проблема 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 имеет ошибку, связанную с использованием GNUTLS в случае многопоточного приложения. Я сделал то, что говорит на документации Gnutls на следующей странице:

http://www.gnu.org/software/gnutls/manual/gnutls.html#multi_002dthreaded-aplications.

Я просто добавил линию:

gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);

До линии:

gnutls_global_init();

В файле:

net_tls_TLSSession.cpp

и восстановить VMIME. Конечно, я включил нужные заголовочные файлы, показанные в примере документации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top