Project

General

Profile

Actions

Bug #19979

closed

dmclock-tests passes but generates a segfault and coredump

Added by Brad Hubbard almost 7 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Category:
OSD
Target version:
-
% Done:

0%

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

Description

(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
#1  0x00007f800dbb251a in __GI_abort () at abort.c:89
#2  0x00007f800dba8da7 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x560275d03a50 "reservation < max_tag || proportion < max_tag", 
    file=file@entry=0x560275d03a10 "/home/brad/working/src/ceph3/src/dmclock/src/dmclock_server.h", line=line@entry=143, 
    function=function@entry=0x560275d04840 <crimson::dmclock::RequestTag::RequestTag(crimson::dmclock::RequestTag const&, crimson::dmclock::ClientInfo const&, crimson::dmclock::ReqParams const&, double const&, double)::__PRETTY_FUNCTION__> "crimson::dmclock::RequestTag::RequestTag(const crimson::dmclock::RequestTag&, const crimson::dmclock::ClientInfo&, const crimson::dmclock::ReqParams&, const Time&, double)") at assert.c:92
#3  0x00007f800dba8e52 in __GI___assert_fail (assertion=assertion@entry=0x560275d03a50 "reservation < max_tag || proportion < max_tag", file=file@entry=0x560275d03a10 "/home/brad/working/src/ceph3/src/dmclock/src/dmclock_server.h", 
    line=line@entry=143, 
    function=function@entry=0x560275d04840 <crimson::dmclock::RequestTag::RequestTag(crimson::dmclock::RequestTag const&, crimson::dmclock::ClientInfo const&, crimson::dmclock::ReqParams const&, double const&, double)::__PRETTY_FUNCTION__> "crimson::dmclock::RequestTag::RequestTag(const crimson::dmclock::RequestTag&, const crimson::dmclock::ClientInfo&, const crimson::dmclock::ReqParams&, const Time&, double)") at assert.c:101
#4  0x0000560275cd1289 in crimson::dmclock::RequestTag::RequestTag (this=<optimized out>, prev_tag=..., client=..., req_params=..., time=<optimized out>, cost=<optimized out>)
    at /home/brad/working/src/ceph3/src/dmclock/src/dmclock_server.h:143
#5  0x0000560275cd5665 in crimson::dmclock::PriorityQueueBase<int, Request, 2u>::do_add_request(std::unique_ptr<Request, std::default_delete<Request> >&&, int const&, crimson::dmclock::ReqParams const&, double, double) (
    this=this@entry=0x5602764a2500, request=request@entry=<unknown type in /home/brad/working/src/ceph3/build/bin/dmclock-tests, CU 0x54a40, DIE 0xbac30>, client_id=@0x7ffc57c30ac8: 17, req_params=..., time=<optimized out>, 
    time@entry=1495153924.6129251, cost=cost@entry=0) at /home/brad/working/src/ceph3/src/dmclock/src/dmclock_server.h:825
#6  0x0000560275cc9548 in crimson::dmclock::PullPriorityQueue<int, Request, 2u>::add_request(std::unique_ptr<Request, std::default_delete<Request> >&&, int const&, crimson::dmclock::ReqParams const&, double, double) (addl_cost=0, 
    time=1495153924.6129251, req_params=..., client_id=@0x7ffc57c30ac8: 17, request=<unknown type in /home/brad/working/src/ceph3/build/bin/dmclock-tests, CU 0x54a40, DIE 0xbac30>, this=0x5602764a2500)
    at /home/brad/working/src/ceph3/src/dmclock/src/dmclock_server.h:1216
#7  crimson::dmclock::PullPriorityQueue<int, Request, 2u>::add_request (this=0x5602764a2500, client_id=@0x7ffc57c30ac8: 17, req_params=..., request=..., addl_cost=0) at /home/brad/working/src/ceph3/src/dmclock/src/dmclock_server.h:1156
#8  0x0000560275cc9a52 in crimson::dmclock::dmclock_server_bad_tag_deathtest_Test::TestBody (this=<optimized out>) at /home/brad/working/src/ceph3/src/dmclock/test/test_dmclock_server.cc:67
#9  0x0000560275d01ba4 in testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void> (location=0x560275d09d2e "the test body", method=<optimized out>, object=<optimized out>)
    at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest.cc:2402
#10 testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void> (object=object@entry=0x56027649bcc0, method=<optimized out>, location=location@entry=0x560275d09d2e "the test body")
    at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest.cc:2438
#11 0x0000560275cf84ca in testing::Test::Run (this=0x56027649bcc0) at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest.cc:2475
#12 0x0000560275cf8618 in testing::TestInfo::Run (this=0x56027649c580) at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest.cc:2656
#13 0x0000560275cf86f5 in testing::TestCase::Run (this=0x56027649c700) at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest.cc:2774
#14 0x0000560275cf89d7 in testing::internal::UnitTestImpl::RunAllTests (this=0x56027649bed0) at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest.cc:4649
#15 0x0000560275d02054 in testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> (location=0x560275d092e8 "auxiliary test code (environments or event listeners)", method=<optimized out>, 
    object=<optimized out>) at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest.cc:2402
#16 testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> (object=0x56027649bed0, method=<optimized out>, 
    location=location@entry=0x560275d092e8 "auxiliary test code (environments or event listeners)") at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest.cc:2438
#17 0x0000560275cf8cf4 in testing::UnitTest::Run (this=0x560275f21ae0 <testing::UnitTest::GetInstance()::instance>) at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest.cc:4257
#18 0x0000560275cab229 in RUN_ALL_TESTS () at /home/brad/working/src/ceph3/src/googletest/googletest/include/gtest/gtest.h:2233
#19 main (argc=<optimized out>, argv=0x7ffc57c31048) at /home/brad/working/src/ceph3/src/googletest/googletest/src/gtest_main.cc:37
(gdb) f
#4  0x0000560275cd1289 in crimson::dmclock::RequestTag::RequestTag (this=<optimized out>, prev_tag=..., client=..., req_params=..., time=<optimized out>, cost=<optimized out>)
    at /home/brad/working/src/ceph3/src/dmclock/src/dmclock_server.h:143
143             assert(reservation < max_tag || proportion < max_tag);
Actions #1

Updated by J. Eric Ivancich almost 7 years ago

  • Category set to OSD
  • Status changed from New to In Progress
  • Assignee set to J. Eric Ivancich

The segfault is to be expected. This test makes use of gtest's EXPECT_DEATH_IF_SUPPORTED feature. For details, see the section on Death Tests in:

https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md

Is this an issue and should use of (ASSERT|EXPECT)_DEATH* be avoided?

Actions #2

Updated by Brad Hubbard almost 7 years ago

Check out src/include/coredumpctl.h and its use.

Actions #3

Updated by J. Eric Ivancich almost 7 years ago

Thanks, Brad. dmClock is an external library (brought into ceph via git-subtree). So the choices are to either duplicate the functionality of src/include/coredumpctl.h within dmclock or not tie dmclock's tests to ceph's tests. Sage opted for the latter.

Actions #4

Updated by Brad Hubbard almost 7 years ago

Would you be happy for me to submit a patch specifically for dmclock/test/test_dmclock_server.cc Eric?

Actions #5

Updated by J. Eric Ivancich almost 7 years ago

Based on the discussion here (https://github.com/ceph/ceph/pull/14997) I'm detaching dmclock's testing from ceph's testing (will push those changes this morning since testing of them completed). Given that I'm not sure that eliminating the core dump from dmclock's testing is a high priority. But if you want to submit a patch, you'd be welcome to do so.

Actions #6

Updated by Brad Hubbard almost 7 years ago

OK Eric, sounds good. I will get a patch done and submit it ASAP.

Actions #8

Updated by Sage Weil almost 3 years ago

  • Status changed from In Progress to Closed
Actions

Also available in: Atom PDF