vmime, libgnutls, и проблема libgcrypt?Утверждение не удалось! - PullRequest
2 голосов
/ 20 октября 2010

Я разрабатываю приложение на 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.

Большое спасибо,

1 Ответ

2 голосов
/ 21 октября 2010

Похоже, что в 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.Конечно, я включил необходимые заголовочные файлы, показанные в примере документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...