Project

General

Profile

Actions

Bug #45195

closed

ceph_test_objectstore: src/os/bluestore/bluestore_types.h: 734: FAILED ceph_assert(p != extents.end())

Added by Brad Hubbard about 4 years ago. Updated almost 4 years ago.

Status:
Resolved
Priority:
High
Assignee:
Target version:
-
% 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


Related issues 1 (0 open1 closed)

Copied to bluestore - Backport #45354: octopus: ceph_test_objectstore: src/os/bluestore/bluestore_types.h: 734: FAILED ceph_assert(p != extents.end())RejectedIgor FedotovActions
Actions

Also available in: Atom PDF