Project

General

Profile

Bug #16488

rbd-mirror: image-replayer: segfault when removing resync listener

Added by Ricardo Dias over 2 years ago. Updated over 2 years ago.

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

0%

Source:
other
Tags:
Backport:
jewel
Regression:
No
Severity:
2 - major
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:

Description

Transcript from Mykola Golub:

2016-06-26 19:22:58.314018 7f83bcff9700 20 rbd::mirror::ImageReplayer: 0x7f836002c3e0 [3/b02b31d5-8ad7-4e83-9df1-0ddd2dc2db8b] finish_mirror_image_status_update:
waiting on 1 in-flight updates
2016-06-26 19:22:58.326240 7f83bcff9700 20 rbd::mirror::ImageReplayer: 0x7f836004fbc0 [3/59b13c41-6c36-411d-b6ef-15790d879af0] handle_mirror_status_update: r=0
2016-06-26 19:22:58.326246 7f83bcff9700 20 rbd::mirror::ImageReplayer: 0x7f836004fbc0 [3/59b13c41-6c36-411d-b6ef-15790d879af0] finish_mirror_image_status_update:
2016-06-26 19:22:58.326248 7f83bcff9700 20 rbd::mirror::ImageReplayer: 0x7f836004fbc0 [3/59b13c41-6c36-411d-b6ef-15790d879af0] shut_down: r=0
2016-06-26 19:22:58.327617 7f83c5ac2700 -1 *** Caught signal (Segmentation fault) **
 in thread 7f83c5ac2700 thread_name:tp_journal

 ceph version 10.2.0-2795-gc850300 (c8503001dc6c76d85195bc2942c180b76face207)
 1: (()+0x3cf227) [0x7f83d4f15227]
 2: (()+0xf8d0) [0x7f83cb73d8d0]
 3: (Mutex::Lock(bool)+0x4) [0x7f83d4f43c34]
 4: (librbd::Journal<librbd::ImageCtx>::remove_listener(librbd::journal::ListenerType, boost::variant<librbd::journal::ResyncLis
tener*, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::voi
d_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_,
boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boos
t::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::d
etail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_>)+0x25) [0x7f83d4dd6ad5]
 5: (boost::detail::function::void_function_obj_invoker1<rbd::mirror::ImageReplayer<librbd::ImageCtx>::shut_down(int, Context*):
:{lambda(int)#8}, void, int>::invoke(boost::detail::function::function_buffer&, int)+0x4d) [0x7f83d4d3b8dd]
 6: (FunctionContext::finish(int)+0x2c) [0x7f83d4d1e21c]
 7: (Context::complete(int)+0x9) [0x7f83d4d1bec9]
 8: (FunctionContext::finish(int)+0x2c) [0x7f83d4d1e21c]
 9: (Context::complete(int)+0x9) [0x7f83d4d1bec9]
 10: (FunctionContext::finish(int)+0x2c) [0x7f83d4d1e21c]
 11: (Context::complete(int)+0x9) [0x7f83d4d1bec9]
 12: (ThreadPool::worker(ThreadPool::WorkThread*)+0xb7f) [0x7f83d4f5416f]
 13: (ThreadPool::WorkThread::entry()+0x10) [0x7f83d4f551c0]
 14: (()+0x80a4) [0x7f83cb7360a4]
 15: (clone()+0x6d) [0x7f83ca09e04d]
 NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.

So it crashed running the code from ImageReplayer<I>::shut_down:

    ctx = new FunctionContext([this, ctx](int r) {
        m_local_image_ctx->journal->remove_listener(
            librbd::journal::ListenerType::RESYNC, m_resync_listener);
        m_local_replay->shut_down(true, ctx);
      });

m_local_image_ctx->journal was null at that moment.

Related issues

Copied to rbd - Backport #16513: jewel: rbd-mirror: image-replayer: segfault when removing resync listener Resolved

History

#1 Updated by Mykola Golub over 2 years ago

  • Status changed from New to Need Review
  • Backport set to jewel

#2 Updated by Mykola Golub over 2 years ago

  • Status changed from Need Review to Pending Backport

#3 Updated by Loic Dachary over 2 years ago

  • Copied to Backport #16513: jewel: rbd-mirror: image-replayer: segfault when removing resync listener added

#4 Updated by Loic Dachary over 2 years ago

  • Status changed from Pending Backport to Resolved

Also available in: Atom PDF