Segfault with multithreaded curl request Segfault with multithreaded curl request curl curl

Segfault with multithreaded curl request


Libcrypto is part of OpenSSL, which is not thread-safe unless you provide the necessary callbacks. According to the documentation, on a POSIX-compliant system (which has thread-local errno) the default thread-id implementation is acceptable, so you just need a locking function:

void locking_function(int mode, int n, const char *file, int line);

This function will need to maintain a set of CRYPTO_num_locks() mutexes, and lock or unlocks the n-th mutex depending on the value of mode. You can read the documentation for more details. The libcurl website actually has some sample code showing how to do this.

Alternatively, you can build libcurl with a different SSL library that is thread safe, such as GnuTLS.