Project

General

Profile

Actions

Bug #17728

closed

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

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

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
% Done:

0%

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

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 1 (0 open1 closed)

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

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

Actions #2

Updated by Kefu Chai over 7 years ago

  • Status changed from New to Fix Under Review
Actions #3

Updated by Kefu Chai over 7 years ago

  • Status changed from Fix Under Review to Resolved
Actions #4

Updated by Loïc Dachary over 7 years ago

  • Status changed from Resolved to Pending Backport
  • Backport set to jewel
Actions #5

Updated by Loïc Dachary over 7 years ago

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

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.

Actions #7

Updated by Loïc Dachary over 7 years ago

  • Status changed from Pending Backport to In Progress
Actions #8

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.

Actions #9

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.

Actions #10

Updated by Loïc Dachary over 7 years ago

  • Status changed from Pending Backport to Resolved
Actions

Also available in: Atom PDF