#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. Нет, мы не разделяем один и тот же контекст между потоками. У нас есть отдельные объекты для каждого потока.