On Mon, Nov 18, 2024 at 10:18:58PM -0500, Scott Talbert via curl-library wrote:
> Starting around curl 8.10.0, we started to see intermittent segfaults while 
> running pycurl's unit
> tests.  The stacktraces generally all look like  this:
> 
> Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> Core was generated by `python3 -m pytest -v'.
> Program terminated with signal SIGSEGV, Segmentation fault.
> #0  __pthread_kill_implementation (threadid=<optimized out>,
>     signo=signo@entry=11, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
> 
> warning: 44   ./nptl/pthread_kill.c: No such file or directory
> [Current thread is 1 (Thread 0x7fdf4910e080 (LWP 3532))]
> (gdb) bt
> #0  __pthread_kill_implementation (threadid=<optimized out>,
>     signo=signo@entry=11, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
> #1  0x00007fdf491a2ebf in __pthread_kill_internal (threadid=<optimized out>,
>     signo=11) at ./nptl/pthread_kill.c:78
> #2  0x00007fdf4914ec82 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
> #3  <signal handler called>
> #4  Curl_llist_insert_next (list=list@entry=0xd1d4180, e=0x0,
>     p=p@entry=0xd1b09a0, ne=ne@entry=0xd1b09c0)
>     at ./debian/build/lib/llist.c:102

Crashes here are almost always the result of using libcurl in a multithreading
manner without taking the precautions listed in
https://curl.se/libcurl/c/threadsafe.html The biggest one that's still left in
recent libcurl versions is that handles may not ever be accessed in more than
one thread at the same time, but another is to set CURLOPT_NOSIGNAL to 1.

I don't know what your test code looks like or how you're distributing tests
across threads, but those would be the first two to look at. For example, if the
test class creates a single handle that each test method then uses, running
those test methods in parallel could easily result in this kind of chaos.

Dan
-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to