Project

General

Profile

Actions

Bug #63633

open

client: fix copying bufferlist to iovec structures in Client::_read

Added by Dhairya Parmar 6 months ago. Updated 4 months ago.

Status:
Pending Backport
Priority:
High
Category:
Correctness/Safety
Target version:
% Done:

0%

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

Description

ceph/src/common/mutex_debug.h: In function 'void ceph::mutex_debug_detail::mutex_debug_impl<<anonymous> >::_pre_unlock() [with bool Recursive = false]' thread 7ffa30c2e9c0 time 2023-11-23T18:40:12.995739+0530
/home/dparmar/CephRepoForRunningTestsLocally/ceph/src/common/mutex_debug.h: 163: FAILED ceph_assert(nlock == 1)

 ceph version 18.0.0-7275-g8bc4cf1939c (8bc4cf1939ce76918542dbb5433652de295e5916) reef (dev)
 1: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x125) [0x7ffa3162127d]
 2: (ceph::register_assert_context(ceph::common::CephContext*)+0) [0x7ffa31621484]
 3: (ceph::mutex_debug_detail::mutex_debug_impl<false>::_pre_unlock()+0x32) [0x559ce274d4d8]
 4: (ceph::mutex_debug_detail::mutex_debug_impl<false>::unlock(bool)+0x10) [0x559ce274d520]
 5: (Client::ll_preadv_pwritev(Fh*, iovec const*, int, long, bool, Context*, ceph::buffer::v15_2_0::list*, bool, bool)+0x112) [0x559ce27b32c4]
 6: (TestClient_LlreadvLlwritev_Test::TestBody()+0x125e) [0x559ce2749c80]
 7: (void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)+0x1b) [0x559ce2839a76]
 8: (void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*)+0x80) [0x559ce2841a0d]
 9: (testing::Test::Run()+0xb4) [0x559ce2833588]
 10: (testing::TestInfo::Run()+0x104) [0x559ce283368e]
 11: (testing::TestSuite::Run()+0xb2) [0x559ce2833742]
 12: (testing::internal::UnitTestImpl::RunAllTests()+0x36b) [0x559ce2834bcb]
 13: (bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)+0x1b) [0x559ce2839ce6]
 14: (bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)+0x80) [0x559ce2841e53]
 15: (testing::UnitTest::Run()+0x63) [0x559ce283385d]
 16: (RUN_ALL_TESTS()+0x11) [0x559ce274785f]
 17: main()
 18: /lib64/libc.so.6(+0x27550) [0x7ffa3024a550]
 19: __libc_start_main()
 20: _start()

goes into a recursive deadlock. the crash is expected since async I/O with null context makes no sense, we need an assertion that a context is passed along with the async I/O call.


Related issues 1 (0 open1 closed)

Copied to CephFS - Backport #64238: reef: client: fix copying bufferlist to iovec structures in Client::_readRejectedDhairya ParmarActions
Actions

Also available in: Atom PDF