Actions
Bug #45195
closedceph_test_objectstore: src/os/bluestore/bluestore_types.h: 734: FAILED ceph_assert(p != extents.end())
% Done:
0%
Source:
Q/A
Tags:
testing
Backport:
Regression:
No
Severity:
2 - major
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
(gdb) bt #0 raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x0000561ba61b15b3 in reraise_fatal (signum=6) at /usr/src/debug/ceph-16.0.0-834.g3ef1bee.el8.x86_64/src/global/signal_handler.cc:332 #2 handle_fatal_signal (signum=6) at /usr/src/debug/ceph-16.0.0-834.g3ef1bee.el8.x86_64/src/global/signal_handler.cc:332 #3 <signal handler called> #4 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #5 0x00007f6b818ddcf5 in __GI_abort () at abort.c:79 #6 0x00007f6b83360411 in ceph::__ceph_assert_fail(char const*, char const*, int, char const*) () from /usr/lib64/ceph/libceph-common.so.2 #7 0x00007f6b833605da in ceph::__ceph_assert_fail(ceph::assert_data const&) () from /usr/lib64/ceph/libceph-common.so.2 #8 0x0000561ba6020811 in bluestore_blob_t::map<BlueStore::_prepare_read_ioc(BlueStore::blobs2read_t&, std::vector<ceph::buffer::v15_2_0::list>*, IOContext*)::<lambda(uint64_t, uint64_t)> > (f=..., x_len=8192, x_off=<optimized out>, this=<optimized out>) at /usr/include/c++/8/bits/stl_map.h:468 #9 BlueStore::_prepare_read_ioc (this=0x561bbcebe000, blobs2read=std::map with 4 elements = {...}, compressed_blob_bls=0x7f6b70453e30, ioc=0x7f6b70453f00) at /usr/src/debug/ceph-16.0.0-834.g3ef1bee.el8.x86_64/src/os/bluestore/BlueStore.cc:9700 #10 0x0000561ba604a0ff in BlueStore::_do_read (this=<optimized out>, c=0x561d587ef860, o=..., offset=0, length=<optimized out>, bl=..., op_flags=0, retry_count=0) at /usr/src/debug/ceph-16.0.0-834.g3ef1bee.el8.x86_64/src/os/bluestore/BlueStore.cc:9883 #11 0x0000561ba604b1b7 in BlueStore::read (this=this@entry=0x561bbcebe000, c_=..., oid=..., offset=offset@entry=0, length=212992, bl=..., op_flags=0) at /usr/src/debug/ceph-16.0.0-834.g3ef1bee.el8.x86_64/src/os/bluestore/BlueStore.h:3388 #12 0x0000561ba5f150f7 in SyntheticWorkloadState::C_SyntheticOnReadable::finish (this=<optimized out>, r=<optimized out>) at /usr/src/debug/ceph-16.0.0-834.g3ef1bee.el8.x86_64/src/include/buffer.h:1017 #13 0x0000561ba5ed2eed in Context::complete (this=0x561bbb50d180, r=<optimized out>) at /usr/src/debug/ceph-16.0.0-834.g3ef1bee.el8.x86_64/src/include/Context.h:77 #14 0x00007f6b833f1325 in Finisher::finisher_thread_entry() () from /usr/lib64/ceph/libceph-common.so.2 #15 0x00007f6b8dd1c2de in start_thread (arg=<optimized out>) at pthread_create.c:486 #16 0x00007f6b819b8133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 (gdb) f #9 BlueStore::_prepare_read_ioc (this=0x561bbcebe000, blobs2read=std::map with 4 elements = {...}, compressed_blob_bls=0x7f6b70453e30, ioc=0x7f6b70453f00) at /usr/src/debug/ceph-16.0.0-834.g3ef1bee.el8.x86_64/src/os/bluestore/BlueStore.cc:9700 9700 auto r = bptr->get_blob().map( (gdb) l 9695 << " reading 0x" << req.r_off 9696 << "~" << req.r_len << std::dec 9697 << dendl; 9698 9699 // read it 9700 auto r = bptr->get_blob().map( 9701 req.r_off, req.r_len, 9702 [&](uint64_t offset, uint64_t length) { 9703 int r = bdev->aio_read(offset, length, &req.bl, ioc); 9704 if (r < 0) (gdb) p req.r_off $6 = 40960 (gdb) p ((BlueStore::Blob*)0x561bbc1d7110)->blob->extents $9 = std::vector of length 1, capacity 1 = {{ <bluestore_interval_t<unsigned long, unsigned int>> = { static INVALID_OFFSET = 18446744073709551615, offset = 87281664, length = 40960 }, <No data fields>}}
So both the offset of the request and length of the extents here are 40960 so 'p' does appear to equal extents.end(). Perhaps some sort of off-by-one error?
/a/bhubbard-2020-04-16_09:57:54-rados-wip-badone-testing-distro-basic-smithi/4957897
Actions