Bug ID | 1181471 |
---|---|
Summary | libcurl hangs in a __poll below curl_easy_cleanup |
Classification | openSUSE |
Product | openSUSE Tumbleweed |
Version | Current |
Hardware | aarch64 |
OS | Other |
Status | NEW |
Severity | Major |
Priority | P5 - None |
Component | Network |
Assignee | screening-team-bugs@suse.de |
Reporter | ma@suse.com |
QA Contact | qa-bugs@suse.de |
Found By | --- |
Blocker | --- |
Hi Predro, a puzzle for the curl maintainers. I'm lost how to further investigate it. Maybe you've got an idea: [https://github.com/openSUSE/zypper/issues/364] - 'Proot' is used to chroot into an openSUSE TW system. This might be the reason, at least ZYPP never received a similar issue report, neither on aarch64 nor on any other architecture. From within the system, libzypp (via libcurl) is able to connect to e.g. download. opensuse.org (the log shows a successful head request). But when closing the connection libcurl reproducible hangs below a call to curl_easy_cleanup (for 20+ minutes before killing zypper). A stacktrace created by libzypp shows curl_easy_cleanup staying in a call to poll: > [bt]: (0) /lib64/libc.so.6 : __poll+0xec [0x7f8a71618c] > [bt]: (1) /usr/lib64/libcurl.so.4 : +0x5e088 [0x7f8a54f088] > [bt]: (2) /usr/lib64/libcurl.so.4 : +0x6024c [0x7f8a55124c] > [bt]: (3) /usr/lib64/libcurl.so.4 : +0x47240 [0x7f8a538240] > [bt]: (4) /usr/lib64/libcurl.so.4 : +0x4740c [0x7f8a53840c] > [bt]: (5) /usr/lib64/libcurl.so.4 : +0x1a3c4 [0x7f8a50b3c4] > [bt]: (6) /usr/lib64/libcurl.so.4 : +0x6e7d0 [0x7f8a55f7d0] > [bt]: (7) /usr/lib64/libcurl.so.4 : curl_easy_cleanup+0x40 [0x7f8a506db0] > [bt]: (8) /usr/lib64/libzypp.so.1722 : zypp::media::MediaCurl::disconnectFrom()+0x2c [0x7f8ada0bdc] > [bt]: (9) /usr/lib64/libzypp.so.1722 : zypp::media::MediaHandler::disconnect()+0x34 [0x7f8ad8bab4] The same is seen in the strace log: > https://github.com/openSUSE/zypper/files/5856500/zypper.strace.log.zip > (search for 'Releasing media http<http://download.opensuse.org' After writing the log line libzypp calls curl_easy_cleanup. Then you see just an endless loop of ppoll calls. Any idea/hint how to circumvent this is welcome.