alexcrichton / curl-rust

Rust bindings to libcurl
MIT License
1k stars 234 forks source link

SEGFAULT in `curl_sys::curl_global_init()` on Ubuntu 22.04.1 LTS #456

Closed jrconlin closed 1 year ago

jrconlin commented 1 year ago

OS: Ubuntu 22.04.01 (jammy) libcurl: libcurl4_7.81.0-1ubuntu http://archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl4_7.81.0-1ubuntu1.3_amd64.deb

I'm getting a segfault inside of https://github.com/alexcrichton/curl-rust/blob/main/src/lib.rs#L103

       unsafe {
            assert_eq!(curl_sys::curl_global_init(curl_sys::CURL_GLOBAL_ALL), 0);
        }

The stack appears to be dying inside of rwlock

__pthread_rwlock_wrlock_full64 (@pthread_rwlock_wrlock@@GLIBC_2.34:11)
___pthread_rwlock_wrlock (@pthread_rwlock_wrlock@@GLIBC_2.34:11)
CRYPTO_STATIC_MUTEX_lock_write (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\boringssl-src-0.5.1+b9232f9\boringssl\src\crypto\thread_pthread.c:75)
CRYPTO_get_ex_new_index (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\boringssl-src-0.5.1+b9232f9\boringssl\src\crypto\ex_data.c:146)
ossl_get_ssl_data_index (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\curl-sys-0.4.56+curl-7.83.1\curl\lib\vtls\openssl.c:405)
ossl_init (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\curl-sys-0.4.56+curl-7.83.1\curl\lib\vtls\openssl.c:1265)
Curl_ssl_init (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\curl-sys-0.4.56+curl-7.83.1\curl\lib\vtls\vtls.c:254)
global_init (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\curl-sys-0.4.56+curl-7.83.1\curl\lib\easy.c:151)
curl_global_init (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\curl-sys-0.4.56+curl-7.83.1\curl\lib\easy.c:210)
curl::init::{{closure}} (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\curl-0.4.44\src\lib.rs:103)
std::sync::once::Once::call_once::{{closure}} (@std::sync::once::Once::call_once::{{closure}}:16)
std::sync::once::Once::call_inner (@std::sync::once::Once::call_inner:214)
std::sync::once::Once::call_once (@std::sync::once::Once::call_once:34)
curl::init (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\curl-0.4.44\src\lib.rs:96)
curl::INIT_CTOR::init_ctor (\home\jrconlin\.cargo\registry\src\github.com-1ecc6299db9ec823\curl-0.4.44\src\lib.rs:147)
call_init (@__libc_start_main@@GLIBC_2.34:77)
__libc_start_main_impl (@__libc_start_main@@GLIBC_2.34:43)
_start (@_start:15)
jrconlin commented 1 year ago

sigh

Closing. this appears to be fixed in the latest update. Thanks!