On Mon, 13 Nov 2023, Frédéric BOITEUX wrote:

My program actually blocks in the socket read. I tried to add some traces, but failed : I’ve tried CURL_TRC_CF() and info() tracing functions, but I didn’t get traces, probably because there is no more easy handle ever available, as my problem comes in curl_multi_cleanup(), after all easy_handles have been cleanup…

curl sets all its sockets in non-blocking state with curlx_nonblock(). Your case seems to suggest that there are times when it fails to do that. What is curious is that you are the only one seeing/reporting this. I think this fact hints that there are additional conditions involved to trigger this. Conditions we have not figured out yet.

#0  __libc_recv (flags=<optimized out>, len=5, buf=0x5639c2314eb3, fd=6)
   at ../sysdeps/unix/sysv/linux/recv.c:28
#1  __libc_recv (fd=6, buf=0x5639c2314eb3, len=5, flags=0)
   at ../sysdeps/unix/sysv/linux/recv.c:23
#2  0x00005639c2210e12 in nw_in_read ()

If you build libcurl yourself, you could instrument the non-blocking state of this socket, and maybe just log it just before the recv() call in nw_in_read().

--

 / daniel.haxx.se
 | Commercial curl support up to 24x7 is available!
 | Private help, bug fixes, support, ports, new features
 | https://curl.se/support.html
-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to