What | Removed | Added |
---|---|---|
Status | NEW | IN_PROGRESS |
I managed to set up some debugging environment and had a debugging session with bzeller. In the working case, curl_multi_socket_action adds a socket and sets a timeout, then returns to libzypp's event loop. In the broken case, curl_multi_socket_action adds a socket to the wait list and sets a timeout, but also removes the socket and clears the timeout before returning to the event loop: 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(log_curl):120 0x556b6be79148 * !!! WARNING !!! 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(log_curl):120 0x556b6be79148 * This is a debug build of libcurl, do not use in production. 2024-09-27 13:12:43 <1> localhost(844) [zypp::media++] MediaCurl.cc(executeCurl):1442 Calling _curlHelper.handleTimout 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(log_curl):120 0x556b6be79148 * STATE: INIT => SETUP handle 0x556b6be79148; line 1884 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(log_curl):120 0x556b6be79148 * STATE: SETUP => CONNECT handle 0x556b6be79148; line 1900 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(log_curl):120 0x556b6be79148 * Added connection 0. The cache now contains 1 members 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(log_curl):120 0x556b6be79148 * STATE: CONNECT => RESOLVING handle 0x556b6be79148; line 1925 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(socketcb):431 CurlPollHelper::socketcb easy 0x556b6be79148 s: 16 what: 1 userp: 0x7ffc1b6c5dc0 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(log_curl):120 0x556b6be79148 * Could not resolve host: download.opensuse.org 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(log_curl):120 0x556b6be79148 * Curl_multi_closed, fd=16 multi is 0x556b6be7ceb8 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(log_curl):120 0x556b6be79148 * Curl_multi_closed, fd=16 entry is 0x556b6be7bbd8 2024-09-27 13:12:43 <1> localhost(844) [zypp-curl++] curlhelper.cc(socketcb):431 CurlPollHelper::socketcb easy 0x556b6be79148 s: 16 what: 4 userp: 0x7ffc1b6c5dc0 Without sockets to poll and an infinite timeout (-1), libzypp waits forever. The curl behaviour happens because some earlier curl call added a negative cache entry for "download.opensuse.org", so it could reach the RESOLVING stage and fail before performing any wait?