Project

General

Profile

Bug #16368

RGWHTTPManager deadlock when HAVE_CURL_MULTI_WAIT=0

Added by Casey Bodley over 1 year ago. Updated 9 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
06/17/2016
Due date:
% Done:

0%

Source:
other
Tags:
Backport:
jewel
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Release:
Needs Doc:
No

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

Copied to rgw - Backport #17846: jewel: RGWHTTPManager deadlock when HAVE_CURL_MULTI_WAIT=0 Resolved

History

#2 Updated by Casey Bodley over 1 year ago

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

#3 Updated by Loic Dachary 12 months ago

  • Status changed from New to Pending Backport
  • Needs Doc set to No

#4 Updated by Loic Dachary 12 months ago

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

#5 Updated by Nathan Cutler 9 months ago

  • Status changed from Pending Backport to Resolved

Also available in: Atom PDF