Project

General

Profile

Actions

Bug #22679

closed

Segmentation fault during rbd diff when rbd image features is only layering

Added by Marcin Garski over 6 years ago. Updated over 6 years ago.

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

0%

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

Description

Running of:

rbd diff --whole-object vm-disk@snapshot_2 --from-snap snapshot --format=json

gives a segmentation fault.

Stack trace:

*** Caught signal (Segmentation fault) **
 in thread 7f64620c00c0 thread_name:rbd
 ceph version 12.2.2 (cf0baeeeeba3b47f9427c6c97e2144b094b7e5ba) luminous (stable)
 1: (()+0x18e014) [0x55dc532ca014]
 2: (()+0x11390) [0x7f64584f8390]
 3: (()+0x1a4a06) [0x7f6461b42a06]
 4: (()+0xd4f5f) [0x7f6461a72f5f]
 5: (()+0x54a39) [0x7f64619f2a39]
 6: (OrderedThrottle::complete_pending_ops()+0x83) [0x7f6458bc7903]
 7: (OrderedThrottle::start_op(Context*)+0x16b) [0x7f6458bc8d3b]
 8: (()+0xd8b80) [0x7f6461a76b80]
 9: (()+0xd9ae8) [0x7f6461a77ae8]
 10: (librbd::Image::diff_iterate2(char const*, unsigned long, unsigned long, bool, bool, int (*)(unsigned long, unsigned long, int, void*), void*)+0x8a) [0x7f64619e5b4a]
 11: (rbd::action::diff::execute(boost::program_options::variables_map const&)+0x3e5) [0x55dc53209a75]
 12: (rbd::Shell::execute(std::vector<char const*, std::allocator<char const*> > const&)+0xa30) [0x55dc531ee890]
 13: (main()+0x71) [0x55dc531b9fc1]
 14: (__libc_start_main()+0xf0) [0x7f6457494830]
 15: (_start()+0x29) [0x55dc531d7369]

The output of rbd info vm-disk is like:

rbd image 'vm-disk':
        size 10240 MB in 2560 objects
        order 22 (4096 kB objects)
        block_name_prefix: rbd_data.1f3c1542ae8944a
        format: 2
        features: layering
        flags:

Running rbd diff on a different image with:

features: layering, exclusive-lock, object-map, fast-diff, deep-flatten

goes fine.

Actions #1

Updated by Jason Dillaman over 6 years ago

  • Status changed from New to Need More Info

@Marcin Garski: I am unable to repeat this using the provided command-line. Can you please install the Ceph debug packages, re-run, and provide the fully resolved backtrace?

Actions #2

Updated by Marcin Garski over 6 years ago

@Jason Borden, I have installed a debug packages and run rbd diff in gdb. Here are the results:

#0  calc_snap_set_diff (cct=cct@entry=0x5555559c1550, snap_set=..., start=<optimized out>, end=<optimized out>, diff=diff@entry=0x7fffffffd270, end_size=end_size@entry=0x7fffffffd228, end_exists=0x7fffffffd21e,
    clone_end_snap_id=0x7fffffffd230) at /build/ceph-12.2.2/src/librados/snap_set_diff.cc:42
#1  0x00007ffff7978f5f in librbd::api::(anonymous namespace)::C_DiffObject::compute_diffs (diffs=0x7fffffffd250, this=0x555555b695b0) at /build/ceph-12.2.2/src/librbd/api/DiffIterate.cc:136
#2  librbd::api::(anonymous namespace)::C_DiffObject::finish (this=0x555555b695b0, r=0) at /build/ceph-12.2.2/src/librbd/api/DiffIterate.cc:92
#3  0x00007ffff78f8a39 in Context::complete (this=0x555555b695b0, r=<optimized out>) at /build/ceph-12.2.2/src/include/Context.h:70
#4  0x00007fffeeacd903 in OrderedThrottle::complete_pending_ops (this=0x7fffffffd8b0) at /build/ceph-12.2.2/src/common/Throttle.cc:675
#5  0x00007fffeeaced3b in OrderedThrottle::start_op (this=this@entry=0x7fffffffd8b0, on_finish=on_finish@entry=0x555555b5b9a0) at /build/ceph-12.2.2/src/common/Throttle.cc:614
#6  0x00007ffff797cb80 in librbd::api::(anonymous namespace)::C_DiffObject::send (this=0x555555b5b9a0) at /build/ceph-12.2.2/src/librbd/api/DiffIterate.cc:67
#7  librbd::api::DiffIterate<librbd::ImageCtx>::execute (this=this@entry=0x7fffffffda60) at /build/ceph-12.2.2/src/librbd/api/DiffIterate.cc:372
#8  0x00007ffff797dae8 in librbd::api::DiffIterate<librbd::ImageCtx>::diff_iterate (ictx=ictx@entry=0x555555b5d850, from_snap_namespace=..., fromsnapname=fromsnapname@entry=0x7fffffffddd0 "snapshot", off=off@entry=0,
    len=len@entry=10737418240, include_parent=<optimized out>, whole_object=true, cb=0x555555621500 <rbd::action::diff::diff_cb(uint64_t, size_t, int, void*)>, arg=0x7fffffffdd40) at /build/ceph-12.2.2/src/librbd/api/DiffIterate.cc:252
#9  0x00007ffff78ebb4a in librbd::Image::diff_iterate2 (this=this@entry=0x7fffffffdd20, fromsnapname=fromsnapname@entry=0x7fffffffddd0 "snapshot", ofs=ofs@entry=0, len=10737418240, include_parent=include_parent@entry=true,
    whole_object=whole_object@entry=true, cb=0x555555621500 <rbd::action::diff::diff_cb(uint64_t, size_t, int, void*)>, arg=0x7fffffffdd40) at /build/ceph-12.2.2/src/librbd/librbd.cc:1459
#10 0x0000555555621a75 in rbd::action::diff::do_diff (f=0x555555a6d3d0, whole_object=true, fromsnapname=0x7fffffffddd0 "snapshot", image=...) at /build/ceph-12.2.2/src/tools/rbd/action/Diff.cc:66
#11 rbd::action::diff::execute (vm=...) at /build/ceph-12.2.2/src/tools/rbd/action/Diff.cc:125
#12 0x0000555555606890 in rbd::Shell::execute (this=<optimized out>, cmdline_arguments=...) at /build/ceph-12.2.2/src/tools/rbd/Shell.cc:151
#13 0x00005555555d1fc1 in main (argc=<optimized out>, argv=<optimized out>) at /build/ceph-12.2.2/src/tools/rbd/rbd.cc:20

Actions #3

Updated by Jason Dillaman over 6 years ago

@Marcin Garski: are you using cache tiering by chance? If so, it looks like it's this issue [1]

[1] http://tracker.ceph.com/issues/17445

Actions #4

Updated by Marcin Garski over 6 years ago

@Jason Borden, yes I am using cache tiering and it seems that I have hit the same issue as in #17445. Thank you for your help.

Actions #5

Updated by Jason Dillaman over 6 years ago

  • Status changed from Need More Info to Duplicate
Actions

Also available in: Atom PDF