Re: crash in Curl_getaddrinfo_ex using libcurl 8.11.1

Dimitry Andric via curl-library <[email protected]>
Newsgroups gmane.comp.web.curl.library
Message-ID <[email protected]>
On 22 Mar 2025, at 01:38, Vadim Grinshpun via curl-library <[email protected]> wrote:
> 
> A program that has been happily using libcurl for years
> started crashing when we upgraded libcurl from 8.10.1 to 8.11.1.
> 
> I was hoping the good folks here might be able
> to point me in the right direction; the crash is within a libcurl getaddrinfo call.
> A sample gdb stack trace is at the end of the email.
> 
> - the OS is Ubuntu 22.04.5 LTS.
> - there were no code changes in the program, just dependency updates
> - the program is multi-threaded
> 
> Based on the fact that 'getaddrinfo' is mentioned in the stack trace, I wonder if this is somehow related
> to a PR that was merged into 8.11.0: https://github.com/curl/curl/pull/15475
> 
> Thanks for any help! And let me know if any other information would be useful.
> 
> -Vadim
> 
> --snip--
> Program terminated with signal SIGABRT, Aborted.
> #0  0x00007fbd93e96a7c in pthread_kill () from /lib/x86_64-linux-gnu/libc.so.6
> [Current thread is 1 (Thread 0x7fbd849fa640 (LWP 1673034))]
> (gdb) where
> [custom signal handler bits removed for brevity]
> #5  0x00007fbd93e96a7c in pthread_kill () from /lib/x86_64-linux-gnu/libc.so.6
> #6  0x00007fbd93e42476 in raise () from /lib/x86_64-linux-gnu/libc.so.6
> #7  0x00007fbd93e287f3 in abort () from /lib/x86_64-linux-gnu/libc.so.6
> #8  0x00007fbd93e8945c in ?? () from /lib/x86_64-linux-gnu/libc.so.6
> #9  0x00007fbd93e89770 in __libc_fatal () from /lib/x86_64-linux-gnu/libc.so.6
> #10 0x00007fbd93f446af in __netlink_assert_response () from /lib/x86_64-linux-gnu/libc.so.6
> #11 0x00007fbd93f43e1e in ?? () from /lib/x86_64-linux-gnu/libc.so.6
> #12 0x00007fbd93f0bd71 in getaddrinfo () from /lib/x86_64-linux-gnu/libc.so.6
> #13 0x0000556ae604a3d8 in Curl_getaddrinfo_ex (nodename=<optimized out>, servname=servname@entry=0x7fbd849f5cfc "443", hints=hints@entry=0x7fbd91248b50,
>     result=result@entry=0x7fbd91248b48) at curl_addrinfo.c:121
> #14 0x0000556ae603b73d in getaddrinfo_thread (arg=arg@entry=0x7fbd91248b18) at asyn-thread.c:311
> #15 0x0000556ae604aaff in curl_thread_create_thunk (arg=<optimized out>) at curl_threads.c:59
> #16 0x00007fbd93e94b43 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
> #17 0x00007fbd93f26990 in ?? () from /lib/x86_64-linux-gnu/libc.so.6

In my experience, this indicates that some other thread is accidentally
closing the file descriptor that getaddrinfo uses internally to
enumerate the interfaces. Typically, because of a double-close of an
unrelated file descriptor.

Maybe you can install the libc6-dbg package, to get some more
information about the functions marked with "??" in the stack trace?
That would make it easier to determine whether a close-race is the cause
of the crash.

-Dimitry

-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.