Actions
Bug #22679
closedSegmentation fault during rbd diff when rbd image features is only layering
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.
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?
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
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]
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.
Updated by Jason Dillaman over 6 years ago
- Status changed from Need More Info to Duplicate
Actions