Bug #16368
closedRGWHTTPManager deadlock when HAVE_CURL_MULTI_WAIT=0
0%
Description
When configure fails to find curl_multi_wait(), do_curl_wait() falls back to select(). This logic fails to ever read from the RGWHTTPManager's pipe fd. The pipe eventually fills up and leads to the following deadlock in RGWHTTPManager::signal_thread():
Thread 138 (Thread 0x7f261affd700 (LWP 9325)):
#0 0x00007f271b5e41cd in write () from /lib64/libpthread.so.0
#1 0x00007f271bf7f940 in RGWHTTPManager::signal_thread() () from /lib64/librgw.so.2
#2 0x00007f271bf807ee in RGWHTTPManager::remove_request(RGWHTTPClient*) () from /lib64/librgw.so.2
#3 0x00007f271bf80855 in RGWHTTPClient::~RGWHTTPClient() () from /lib64/librgw.so.2
#4 0x00007f271c0cd8a9 in RGWRESTStreamRWRequest::~RGWRESTStreamRWRequest() () from /lib64/librgw.so.2
#5 0x00007f271c0d3549 in RGWRESTReadResource::~RGWRESTReadResource() () from /lib64/librgw.so.2
#6 0x00007f271bf316f8 in RefCountedObject::put() () from /lib64/librgw.so.2
#7 0x00007f271bfe2bc3 in RGWReadRemoteDataLogShardInfoCR::~RGWReadRemoteDataLogShardInfoCR() () from /lib64/librgw.so.2
#8 0x00007f271bf316f8 in RefCountedObject::put() () from /lib64/librgw.so.2
#9 0x00007f271bf2d94f in RGWCoroutinesStack::operate(RGWCoroutinesEnv*) () from /lib64/librgw.so.2
#10 0x00007f271bf2f6a1 in RGWCoroutinesManager::run(std::list<RGWCoroutinesStack*, std::allocator<RGWCoroutinesStack*> >&) () from /lib64/librgw.so.2
#11 0x00007f271bf30260 in RGWCoroutinesManager::run(RGWCoroutine*) () from /lib64/librgw.so.2
#12 0x00007f271bfd75d2 in RGWRemoteDataLog::run_sync(int, rgw_data_sync_status&) () from /lib64/librgw.so.2
#13 0x00007f271c0988b9 in RGWDataSyncProcessorThread::process() () from /lib64/librgw.so.2
#14 0x00007f271c03e313 in RGWRadosThread::Worker::entry() () from /lib64/librgw.so.2
#15 0x00007f271b5dddc5 in start_thread () from /lib64/libpthread.so.0
#16 0x00007f271abe7ced in clone () from /lib64/libc.so.6
Updated by Casey Bodley almost 8 years ago
PR against master: https://github.com/ceph/ceph/pull/9785
Updated by Casey Bodley almost 8 years ago
- Priority changed from Urgent to Normal
- Severity changed from 1 - critical to 3 - minor
Updated by Loïc Dachary over 7 years ago
- Status changed from New to Pending Backport
Updated by Loïc Dachary over 7 years ago
- Copied to Backport #17846: jewel: RGWHTTPManager deadlock when HAVE_CURL_MULTI_WAIT=0 added
Updated by Nathan Cutler over 7 years ago
- Status changed from Pending Backport to Resolved