Project

General

Profile

Actions

Bug #16368

closed

RGWHTTPManager deadlock when HAVE_CURL_MULTI_WAIT=0

Added by Casey Bodley almost 8 years ago. Updated about 7 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Target version:
-
% Done:

0%

Source:
other
Tags:
Backport:
jewel
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

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


Related issues 1 (0 open1 closed)

Copied to rgw - Backport #17846: jewel: RGWHTTPManager deadlock when HAVE_CURL_MULTI_WAIT=0ResolvedCasey BodleyActions
Actions #2

Updated by Casey Bodley almost 8 years ago

  • Priority changed from Urgent to Normal
  • Severity changed from 1 - critical to 3 - minor
Actions #3

Updated by Loïc Dachary over 7 years ago

  • Status changed from New to Pending Backport
Actions #4

Updated by Loïc Dachary over 7 years ago

  • Copied to Backport #17846: jewel: RGWHTTPManager deadlock when HAVE_CURL_MULTI_WAIT=0 added
Actions #5

Updated by Nathan Cutler about 7 years ago

  • Status changed from Pending Backport to Resolved
Actions

Also available in: Atom PDF