Project

General

Profile

Bug #17728

Message.cc: 193: FAILED assert(middle.length() == 0)

Added by David Zafman over 2 years ago. Updated over 2 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
10/27/2016
Due date:
% Done:

0%

Source:
other
Tags:
Backport:
jewel
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:

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]


Related issues

Copied to Ceph - Backport #17748: jewel: Message.cc: 193: FAILED assert(middle.length() == 0) Resolved

History

#1 Updated by Kefu Chai over 2 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

#2 Updated by Kefu Chai over 2 years ago

  • Status changed from New to Need Review

#3 Updated by Kefu Chai over 2 years ago

  • Status changed from Need Review to Resolved

#4 Updated by Loic Dachary over 2 years ago

  • Status changed from Resolved to Pending Backport
  • Backport set to jewel

#5 Updated by Loic Dachary over 2 years ago

  • Copied to Backport #17748: jewel: Message.cc: 193: FAILED assert(middle.length() == 0) added

#6 Updated by Loic Dachary over 2 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.

#7 Updated by Loic Dachary over 2 years ago

  • Status changed from Pending Backport to In Progress

#8 Updated by Loic Dachary over 2 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.

#9 Updated by Kefu Chai over 2 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.

#10 Updated by Loic Dachary over 2 years ago

  • Status changed from Pending Backport to Resolved

Also available in: Atom PDF