Bug #19979
closeddmclock-tests passes but generates a segfault and coredump
0%
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);
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?
Updated by Brad Hubbard almost 7 years ago
Check out src/include/coredumpctl.h and its use.
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.
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?
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.
Updated by Brad Hubbard almost 7 years ago
OK Eric, sounds good. I will get a patch done and submit it ASAP.
Updated by Brad Hubbard almost 7 years ago
Updated by Sage Weil almost 3 years ago
- Status changed from In Progress to Closed