On 24.08.2025 03:11, Michael Tokarev wrote:
block/curl.c uses CURLMOPT_SOCKETFUNCTION to register a socket callback.
According to the documentation, this callback is called not just with
application-created sockets but also with internal curl sockets, - and
for such sockets, user data pointer is not set by the application, so
the result qemu crashing.
Pass BDRVCURLState directly to the callback function as user pointer,
instead of relying on CURLINFO_PRIVATE.
This problem started happening with update of libcurl from 8.9 to 8.10 --
apparently with this change curl started using private handles more.
(CURLINFO_PRIVATE is used in one more place, in curl_multi_check_completion() -
it might need a similar fix too)
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3081
Kevin, qemu-block@ -- does it look okay if I'll push this one through
trivial-patches tree? It's not exactly trivial (but simple enough),
but I'd rather fix this issue, here and for debian.
Or are you going to send a pullreq for block?
Thanks,
/mjt