Bug #17728
closedMessage.cc: 193: FAILED assert(middle.length() == 0)
0%
Description
http://pulpito.ceph.com/yuriw-2016-10-25_16:08:46-rados-master-distro-basic-smithi/494756
suites: ['all/msgr.yaml}', 'rados/singleton-nomsgr/{rados.yaml’]
Assertion: /srv/autobuild-ceph/gitbuilder.git/build/rpmbuild/BUILD/ceph-11.0.2/src/msg/Message.cc: 193: FAILED assert(middle.length() == 0)
ceph version v11.0.2-682-gbbdfd13 (bbdfd1375e8d2d0b8db59fd805aeb2a5c8ea2563)
1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x85) [0x7f78dbb94085]
2: (()+0x1e7056) [0x7f78dbb99056]
3: (AsyncConnection::prepare_send_message(unsigned long, Message*, ceph::buffer::list&)+0x25c) [0x7f78dbdb0b7c]
4: (AsyncConnection::send_message(Message*)+0x42f) [0x7f78dbdb686f]
5: (SyntheticDispatcher::send_message_wrap(boost::intrusive_ptr<Connection>, Message*)+0x31b) [0x7f78dbb53b5b]
6: (SyntheticWorkload::send_message()+0x554) [0x7f78dbb57024]
7: (MessengerTest_SyntheticStressTest_Test::TestBody()+0x3da) [0x7f78dbb4485a]
8: (void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)+0x43) [0x7f78dbb88363]
9: (testing::Test::Run()+0xb7) [0x7f78dbb7ac97]
10: (testing::TestInfo::Run()+0x9e) [0x7f78dbb7ad3e]
11: (testing::TestCase::Run()+0xa5) [0x7f78dbb7ae45]
12: (testing::internal::UnitTestImpl::RunAllTests()+0x278) [0x7f78dbb7b128]
13: (testing::UnitTest::Run()+0x68) [0x7f78dbb7b3f8]
14: (main()+0x199) [0x7f78dbb36c99]
15: (__libc_start_main()+0xf5) [0x7f78d74cfb15]
16: (()+0x187c15) [0x7f78dbb39c15]
Updated by Kefu Chai over 7 years ago
- Assignee set to Kefu Chai
this assertion was added by a9651282f7c16df872757b82d3d2995d92458d5c.
one can reproduce this with
ceph_test_msgr --gtest_filter=Messenger/MessengerTest.SyntheticStressTest/0
Updated by Kefu Chai over 7 years ago
- Status changed from New to Fix Under Review
Updated by Kefu Chai over 7 years ago
- Status changed from Fix Under Review to Resolved
Updated by Loïc Dachary over 7 years ago
- Status changed from Resolved to Pending Backport
- Backport set to jewel
Updated by Loïc Dachary over 7 years ago
- Copied to Backport #17748: jewel: Message.cc: 193: FAILED assert(middle.length() == 0) added
Updated by Loïc Dachary over 7 years ago
The same error happens at http://qa-proxy.ceph.com/teuthology/loic-2016-10-31_09:24:48-rados-wip-17734-jewel-distro-basic-smithi/505937/teuthology.log which is based on jewel plus https://github.com/ceph/ceph/pull/11679. In jewel the tests does not make use of middle() but the code does: it looks like the problem might be elsewhere. Backporting this fix would not be enough to allow https://github.com/ceph/ceph/pull/11679 to be merged because it modifies code that does not exist in jewel.
Updated by Loïc Dachary over 7 years ago
- Status changed from Pending Backport to In Progress
Updated by Loïc Dachary over 7 years ago
- Status changed from In Progress to Pending Backport
The tests have changed a lot but the problem above is because the test does not create messages as expected. We should not be concerned with the patch itself doing something wrong.
Updated by Kefu Chai over 7 years ago
Loïc,
i agree with you that the test didn't do the right thing: to use "middle" to carry the payload. but the change(a9651282f7c16df872757b82d3d2995d92458d5c) which uncovers this problem was introduced after jewel is released. so jewel is safe in this sense. and also the encoder of Payload was implemented using the new style encoder framework. which makes the porting non-trivial. so maybe it's not worthwhile to port it?
anyway, i have no strong opinion on this though. and i am happy to help port it if you think we'd better to include this fix in jewel.
Updated by Loïc Dachary over 7 years ago
- Status changed from Pending Backport to Resolved