Сбой Curl в функции «osl_connect_common» при параллельном выполнении нескольких сетевых вызовов

#c #ios #curl #openssl

Вопрос:

Разбился: Поток

 0 libsystem_pthread.dylib 0x5948 pthread_rwlock_rdlock   110 1 XYZ 0x259ac08 CRYPTO_THREAD_read_lock   10241200 2 XYZ 0x251a184 int_err_get_item   9714220 3 XYZ 0x2519f0c ERR_lib_error_string   9713588 4 XYZ 0x2519cd4 ERR_error_string_n   9713020 5 XYZ 0x260bbfc ossl_strerror   10704036 6 XYZ 0x260c4e4 ossl_connect_common   10706316 7 XYZ 0x2610538 Curl_ssl_connect_nonblocking   10722784 8 XYZ 0x25e2df8 https_connecting   10536608 9 XYZ 0x25e2d90 Curl_http_connect   10536504 10 XYZ 0x25f0990 multi_runsingle   10592824 11 XYZ 0x25f049c curl_multi_perform   10591556 12 XYZ 0x25d8d28 curl_easy_perform   10495440  

**Версия операционной системы : IOS 15 Версия Curl : 7.76.1 Версия OpenSSL : OpenSSL 1.1.1 k 25 марта 2021 года.

Проблема : Мы выполняем несколько сетевых вызовов(get/post/multipart)в нескольких потоках, и это работает, но через некоторое время происходит сбой, когда устройство переходит в фоновый режим.

Комментарии:

1. Создайте и запустите свою программу с помощью ThreadSanitizer.

2. Показать код. Вы используете один и тот же контекст завитка между потоками? Кроме того, ERR_error_string_n задокументирован как небезопасный для потоков.

3. Нет, мы не разделяем один и тот же контекст между потоками. У нас есть отдельные объекты для каждого потока.