Project

General

Profile

Actions

Bug #9057

closed

mark_down from fast dispatch can deadlock

Added by Sage Weil almost 10 years ago. Updated over 9 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
-
Category:
-
Target version:
-
% Done:

0%

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

Description

#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x0000000000b40661 in Wait (mutex=..., this=0x2b648f38) at ./common/Cond.h:55
#2  Pipe::stop_and_wait (this=0x2b648d20) at msg/Pipe.cc:1412
#3  0x0000000000a5ecbd in SimpleMessenger::mark_down (this=0x7bc5b10, con=<optimized out>) at msg/SimpleMessenger.cc:673
#4  0x0000000000618674 in OSD::require_same_peer_instance (this=0xa3f2e90, op=..., map=...) at osd/OSD.cc:6710
#5  0x0000000000698995 in OSD::handle_replica_op<MOSDECSubOpWriteReply, 109> (this=0xa3f2e90, op=..., osdmap=...) at osd/OSD.cc:8073
#6  0x00000000006522be in OSD::dispatch_op_fast (this=0xa3f2e90, op=..., osdmap=...) at osd/OSD.cc:5692
#7  0x0000000000652384 in OSD::dispatch_session_waiting (this=0xa3f2e90, session=0x2e05ec30, osdmap=...) at osd/OSD.cc:5409
#8  0x000000000065431c in OSD::ms_fast_dispatch (this=0xa3f2e90, m=<optimized out>) at osd/OSD.cc:5432
#9  0x0000000000b2e029 in ms_fast_dispatch (m=0xb227ef0, this=0x7bc5b10) at msg/Messenger.h:607
#10 DispatchQueue::fast_dispatch (this=0x7bc5c18, m=0xb227ef0) at msg/DispatchQueue.cc:71
#11 0x0000000000b56c9b in Pipe::reader (this=0x2b648d20) at msg/Pipe.cc:1566
#12 0x0000000000b5893d in Pipe::Reader::entry (this=<optimized out>) at msg/Pipe.h:49
#13 0x0000000005288e9a in start_thread (arg=0x30719700) at pthread_create.c:308
#14 0x000000000690e3fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#15 0x0000000000000000 in ?? ()

that function does

void Pipe::stop_and_wait()
{
  if (state != STATE_CLOSED)
    stop();

  while (reader_running &&
     reader_dispatching)
    cond.Wait(pipe_lock);
}
Actions

Also available in: Atom PDF