Fix[mqba::AdminSession]: handle in-flight events on teardown - #1676
Merged
Conversation
678098
commented
Jul 31, 2026
| switch (_testCase) { | ||
| case 0: | ||
| case 1: test1_watermark(); break; | ||
| case 2: test2_safeConcurrentTeardown(); break; |
Collaborator
Author
There was a problem hiding this comment.
Fails in main / ASAN
126/209 Test #153: mqba_adminsession.t ..............................***Failed 0.22 sec
[18:59:23] TEST START
[18:59:23] CASE 1: SUCCESS
[18:59:23] CASE 2: FAILURE (rc 1)
TEST /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp CASE 2
=================================================================
==3098==ERROR: AddressSanitizer: heap-use-after-free on address 0x7c9d53fe0ff0 at pc 0x5562a26206a2 bp 0x7b0d519fe3e0 sp 0x7b0d519fe3d8
READ of size 8 at 0x7c9d53fe0ff0 thread T1
#0 0x5562a26206a1 in BloombergLP::mqbi::DispatcherClient::inDispatcherThread() const /blazingmq/src/groups/mqb/mqbi/mqbi_dispatcher.h:719:17
#1 0x5562a261aab6 in BloombergLP::mqba::AdminSession::finalizeAdminCommand(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&) /blazingmq/src/groups/mqb/mqba/mqba_adminsession.cpp:195:5
#2 0x5562a262a07b in void BloombergLP::bdlf::MemFn<void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&)>::operator()<BloombergLP::mqba::AdminSession*>(BloombergLP::mqba::AdminSession* const&, BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&) const /opt/bb/include/bdlf_memfn.h:579:16
#3 0x5562a2629f6d in void BloombergLP::bdlf::Bind_Invoker<void, 3>::invoke<BloombergLP::bdlf::MemFn<void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&)> const, BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>> const, BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::MemFn<void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&)> const*, BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>> const*, BloombergLP::bdlf::Bind_ArgTuple0&) const /opt/bb/include/bdlf_bind.h:8660:9
#4 0x5562a2629e7b in void BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&), BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>>>::invokeImpl<BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::Bind_ArgTuple0&, BloombergLP::bslmf::Tag<0u>) const /opt/bb/include/bdlf_bind.h:5950:24
#5 0x5562a2629d80 in void BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&), BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>>>::invoke<BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::Bind_ArgTuple0&) const /opt/bb/include/bdlf_bind.h:6014:16
#6 0x5562a2629ce5 in BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&), BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>>>::operator()() const /opt/bb/include/bdlf_bind.h:6023:16
#7 0x5562a2629bc1 in BloombergLP::bslstl::Function_InvokerUtil_Dispatch<5, void (), BloombergLP::bdlf::Bind<BloombergLP::bslmf::Nil, void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&), BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>>>>::invoke(BloombergLP::bslstl::Function_Rep const*) /opt/bb/include/bslstl_function_invokerutil.h:967:12
#8 0x5562a26210ef in BloombergLP::bslstl::Function_Variadic<void ()>::operator()() const /opt/bb/include/bslstl_function.h:1545:12
#9 0x5562a2c5855a in BloombergLP::mqbmock::Dispatcher::processQueue() /blazingmq/src/groups/mqb/mqbmock/mqbmock_dispatcher.cpp:154:9
#10 0x5562a246b79c in (anonymous namespace)::QueueProcessor::run() /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp:252:29
#11 0x5562a246d7db in void BloombergLP::bdlf::MemFn<void ((anonymous namespace)::QueueProcessor::*)()>::operator()<(anonymous namespace)::QueueProcessor*>((anonymous namespace)::QueueProcessor* const&) const /opt/bb/include/bdlf_memfn.h:557:16
#12 0x5562a246d6e8 in void BloombergLP::bdlf::Bind_Invoker<void, 1>::invoke<BloombergLP::bdlf::MemFn<void ((anonymous namespace)::QueueProcessor::*)()> const, BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*> const, BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::MemFn<void ((anonymous namespace)::QueueProcessor::*)()> const*, BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*> const*, BloombergLP::bdlf::Bind_ArgTuple0&) const /opt/bb/include/bdlf_bind.h:8610:9
#13 0x5562a246d64b in void BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>::invokeImpl<BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::Bind_ArgTuple0&, BloombergLP::bslmf::Tag<0u>) const /opt/bb/include/bdlf_bind.h:5950:24
#14 0x5562a246d550 in void BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>::invoke<BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::Bind_ArgTuple0&) const /opt/bb/include/bdlf_bind.h:6014:16
#15 0x5562a246d1a5 in BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>::operator()() const /opt/bb/include/bdlf_bind.h:6023:16
#16 0x5562a246ccec in BloombergLP::bslmt::EntryPointFunctorAdapter<BloombergLP::bdlf::Bind<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>>::invokerFunction(void*) /opt/bb/include/bslmt_entrypointfunctoradapter.h:324:5
#17 0x5562a2c0c1d2 in bslmt_EntryPointFunctorAdapter_invoker /blazingmq/deps/srcs/bde/groups/bsl/bslmt/bslmt_entrypointfunctoradapter.cpp:15:5
#18 0x5562a241d9ba in asan_thread_start(void*) crtstuff.c
#19 0x7f0d54e7ab83 (/lib/x86_64-linux-gnu/libc.so.6+0x9cb83) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
#20 0x7f0d54f07b63 in clone (/lib/x86_64-linux-gnu/libc.so.6+0x129b63) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
0x7c9d53fe0ff0 is located 112 bytes inside of 1136-byte region [0x7c9d53fe0f80,0x7c9d53fe13f0)
freed by thread T0 here:
#0 0x5562a241fe1a in free (/blazingmq/cmake.bld/Linux/tests/mqba_adminsession.t+0x441e1a) (BuildId: bdfa8d94e26b8726be70eff0331e796d35f584a8)
#1 0x5562a29e45af in BloombergLP::bslma::MallocFreeAllocator::deallocate(void*) /blazingmq/deps/srcs/bde/groups/bsl/bslma/bslma_mallocfreeallocator.h:216:9
#2 0x5562a2c09b4c in BloombergLP::bslma::TestAllocator::deallocate(void*) /blazingmq/deps/srcs/bde/groups/bsl/bslma/bslma_testallocator.cpp:731:20
#3 0x5562a2bfe1db in BloombergLP::bslma::Allocator::do_deallocate(void*, unsigned long, unsigned long) /blazingmq/deps/srcs/bde/groups/bsl/bslma/bslma_allocator.cpp:100:11
#4 0x5562a2473f48 in std::__1::pmr::memory_resource::deallocate[abi:ne210107](void*, unsigned long, unsigned long) /blazingmq/deps/srcs/llvm-project/runtimes/cmake.bld/include/c++/v1/__memory_resource/memory_resource.h:42:5
#5 0x5562a2618a0e in std::__1::pmr::polymorphic_allocator<BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>>::deallocate[abi:ne210107](BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>*, unsigned long) /blazingmq/deps/srcs/llvm-project/runtimes/cmake.bld/include/c++/v1/__memory_resource/polymorphic_allocator.h:77:13
#6 0x5562a26189b4 in bsl::allocator<BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>>::deallocate(BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>*, unsigned long) /opt/bb/include/bslma_bslallocator.h:999:11
#7 0x5562a2618984 in bsl::allocator_traits<bsl::allocator<BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>>>::deallocate(bsl::allocator<BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>>&, BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>*, unsigned long) /opt/bb/include/bslma_bslallocator.h:863:11
#8 0x5562a26186b3 in BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>::disposeRep() /opt/bb/include/bslstl_sharedptrallocateinplacerep.h:351:5
#9 0x5562a2c05ba0 in BloombergLP::bslma::SharedPtrRep::releaseRef() /blazingmq/deps/srcs/bde/groups/bsl/bslma/bslma_sharedptrrep.cpp:52:9
#10 0x5562a261245e in bsl::shared_ptr<BloombergLP::mqba::AdminSession>::reset() /opt/bb/include/bslstl_sharedptr.h:5279:14
#11 0x5562a245fe8e in test2_safeConcurrentTeardown() /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp:529:17
#12 0x5562a245c3b0 in main /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp:557:17
#13 0x7f0d54e081c9 (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
#14 0x7f0d54e0828a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
#15 0x5562a237c7c4 in _start (/blazingmq/cmake.bld/Linux/tests/mqba_adminsession.t+0x39e7c4) (BuildId: bdfa8d94e26b8726be70eff0331e796d35f584a8)
previously allocated by thread T0 here:
#0 0x5562a24200b8 in malloc (/blazingmq/cmake.bld/Linux/tests/mqba_adminsession.t+0x4420b8) (BuildId: bdfa8d94e26b8726be70eff0331e796d35f584a8)
#1 0x5562a2bff659 in BloombergLP::bslma::MallocFreeAllocator::allocate(unsigned long) /blazingmq/deps/srcs/bde/groups/bsl/bslma/bslma_mallocfreeallocator.cpp:112:20
#2 0x5562a2c08480 in BloombergLP::bslma::TestAllocator::allocate(unsigned long) /blazingmq/deps/srcs/bde/groups/bsl/bslma/bslma_testallocator.cpp:468:58
#3 0x5562a2bfddf7 in BloombergLP::bslma::Allocator::do_allocate(unsigned long, unsigned long) /blazingmq/deps/srcs/bde/groups/bsl/bslma/bslma_allocator.cpp:53:22
#4 0x5562a25484d8 in std::__1::pmr::memory_resource::allocate[abi:ne210107](unsigned long, unsigned long) /blazingmq/deps/srcs/llvm-project/runtimes/cmake.bld/include/c++/v1/__memory_resource/memory_resource.h:37:12
#5 0x5562a261836d in std::__1::pmr::polymorphic_allocator<BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>>::allocate[abi:ne210107](unsigned long) /blazingmq/deps/srcs/llvm-project/runtimes/cmake.bld/include/c++/v1/__memory_resource/polymorphic_allocator.h:69:45
#6 0x5562a26182f0 in bsl::allocator<BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>>::allocate(unsigned long, void const*) /opt/bb/include/bslma_bslallocator.h:992:18
#7 0x5562a2618250 in bsl::allocator_traits<bsl::allocator<BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>>>::allocate(bsl::allocator<BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>>&, unsigned long) /opt/bb/include/bslma_bslallocator.h:851:18
#8 0x5562a2617e65 in BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>::makeRep(bsl::allocator<BloombergLP::bslstl::SharedPtrAllocateInplaceRep<BloombergLP::mqba::AdminSession, bsl::allocator<char>>>) /opt/bb/include/bslstl_sharedptrallocateinplacerep.h:332:37
#9 0x5562a2611f1c in bsl::enable_if<!is_array<BloombergLP::mqba::AdminSession>::value, bsl::shared_ptr<BloombergLP::mqba::AdminSession>>::type bsl::allocate_shared<BloombergLP::mqba::AdminSession, BloombergLP::bslma::Allocator, bsl::shared_ptr<BloombergLP::bmqio::TestChannel>&, BloombergLP::bmqp_ctrlmsg::NegotiationMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&, BloombergLP::mqbmock::Dispatcher*, BloombergLP::bdlcc::SharedObjectPool<BloombergLP::bdlbb::Blob, bsl::function<void (void*, BloombergLP::bslma::Allocator*)>, BloombergLP::bdlcc::ObjectPoolFunctors::RemoveAll<BloombergLP::bdlbb::Blob>>*, BloombergLP::bdlmt::EventScheduler*, bsl::function<void (bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&, bsl::function<void (int, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&)> const&, bool)>&>(BloombergLP::bslma::Allocator*, bsl::shared_ptr<BloombergLP::bmqio::TestChannel>&, BloombergLP::bmqp_ctrlmsg::NegotiationMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&, BloombergLP::mqbmock::Dispatcher*&&, BloombergLP::bdlcc::SharedObjectPool<BloombergLP::bdlbb::Blob, bsl::function<void (void*, BloombergLP::bslma::Allocator*)>, BloombergLP::bdlcc::ObjectPoolFunctors::RemoveAll<BloombergLP::bdlbb::Blob>>*&&, BloombergLP::bdlmt::EventScheduler*&&, bsl::function<void (bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&, bsl::function<void (int, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&)> const&, bool)>&) /opt/bb/include/bslstl_sharedptr.h:6627:28
#10 0x5562a245fcb4 in test2_safeConcurrentTeardown() /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp:502:13
#11 0x5562a245c3b0 in main /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp:557:17
#12 0x7f0d54e081c9 (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
#13 0x7f0d54e0828a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
#14 0x5562a237c7c4 in _start (/blazingmq/cmake.bld/Linux/tests/mqba_adminsession.t+0x39e7c4) (BuildId: bdfa8d94e26b8726be70eff0331e796d35f584a8)
Thread T1 created by T0 here:
#0 0x5562a24040b5 in pthread_create (/blazingmq/cmake.bld/Linux/tests/mqba_adminsession.t+0x4[260](https://github.com/bloomberg/blazingmq/actions/runs/30652291166/job/91238796214?pr=1676#step:5:261)b5) (BuildId: bdfa8d94e26b8726be70eff0331e796d35f584a8)
#1 0x5562a2c16c82 in BloombergLP::bslmt::ThreadUtilImpl<BloombergLP::bslmt::Platform::PosixThreads>::create(unsigned long*, BloombergLP::bslmt::ThreadAttributes const&, void* (*)(void*), void*) /blazingmq/deps/srcs/bde/groups/bsl/bslmt/bslmt_threadutilimpl_pthread.cpp:231:10
#2 0x5562a[261](https://github.com/bloomberg/blazingmq/actions/runs/30652291166/job/91238796214?pr=1676#step:5:262)26cb in BloombergLP::bslmt::ThreadUtilImpl<BloombergLP::bslmt::Platform::PosixThreads>::create(unsigned long*, void* (*)(void*), void*) /opt/bb/include/bslmt_threadutilimpl_pthread.h:381:12
#3 0x5562a246ba6e in int BloombergLP::bslmt::ThreadUtil::createWithAllocator<BloombergLP::bdlf::Bind<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>>(unsigned long*, BloombergLP::bdlf::Bind<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>> const&, BloombergLP::bslma::Allocator*) /opt/bb/include/bslmt_threadutil.h:892:14
#4 0x5562a246b48c in int BloombergLP::bslmt::ThreadUtil::create<BloombergLP::bdlf::Bind<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>>(unsigned long*, BloombergLP::bdlf::Bind<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>> const&) /opt/bb/include/bslmt_threadutil.h:803:12
#5 0x5562a246a5ef in (anonymous namespace)::QueueProcessor::start() /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp:241:18
#6 0x5562a245f2e9 in test2_safeConcurrentTeardown() /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp:460:15
#7 0x5562a245c3b0 in main /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp:557:17
#8 0x7f0d54e081c9 (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
#9 0x7f0d54e0828a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
#10 0x5562a237c7c4 in _start (/blazingmq/cmake.bld/Linux/tests/mqba_adminsession.t+0x39e7c4) (BuildId: bdfa8d94e26b8726be70eff0331e796d35f584a8)
SUMMARY: AddressSanitizer: heap-use-after-free /blazingmq/src/groups/mqb/mqbi/mqbi_dispatcher.h:719:17 in BloombergLP::mqbi::DispatcherClient::inDispatcherThread() const
Shadow bytes around the buggy address:
0x7c9d53fe0d00: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x7c9d53fe0d80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x7c9d53fe0e00: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x7c9d53fe0e80: fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa fa
0x7c9d53fe0f00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x7c9d53fe0f80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd[fd]fd
0x7c9d53fe1000: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x7c9d53fe1080: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x7c9d53fe1100: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x7c9d53fe1180: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x7c9d53fe1200: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==3098==ABORTING
Collaborator
Author
There was a problem hiding this comment.
UBSAN is also not happy about this
126/209 Test #153: mqba_adminsession.t ..............................***Failed 0.29 sec
[19:18:51] TEST START
[19:18:51] CASE 1: SUCCESS
[19:18:51] CASE 2: FAILURE (rc 1)
TEST /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp CASE 2
/blazingmq/src/groups/bmq/bmqp/bmqp_schemaeventbuilder.h:241:5: runtime error: member call on misaligned address 0xa5a5a5a5a5a5a5a5 for type 'BloombergLP::bdlbb::Blob', which requires 8 byte alignment
0xa5a5a5a5a5a5a5a5: note: pointer points here
<memory cannot be printed>
#0 0x555c22aa6408 in int BloombergLP::bmqp::SchemaEventBuilder::setMessage<BloombergLP::bmqp_ctrlmsg::ControlMessage>(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, BloombergLP::bmqp::EventType::Enum) /blazingmq/src/groups/bmq/bmqp/bmqp_schemaeventbuilder.h:241:5
#1 0x555c22c97d78 in BloombergLP::mqba::AdminSession::finalizeAdminCommand(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&) /blazingmq/src/groups/mqb/mqba/mqba_adminsession.cpp:211:43
#2 0x555c22ca901e in void BloombergLP::bdlf::MemFn<void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&)>::operator()<BloombergLP::mqba::AdminSession*>(BloombergLP::mqba::AdminSession* const&, BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&) const /opt/bb/include/bdlf_memfn.h:579:16
#3 0x555c22ca8dde in void BloombergLP::bdlf::Bind_Invoker<void, 3>::invoke<BloombergLP::bdlf::MemFn<void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&)> const, BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>> const, BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::MemFn<void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&)> const*, BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>> const*, BloombergLP::bdlf::Bind_ArgTuple0&) const /opt/bb/include/bdlf_bind.h:8660:9
#4 0x555c22ca8a51 in void BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&), BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>>>::invokeImpl<BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::Bind_ArgTuple0&, BloombergLP::bslmf::Tag<0u>) const /opt/bb/include/bdlf_bind.h:5950:24
#5 0x555c22ca897e in void BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&), BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>>>::invoke<BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::Bind_ArgTuple0&) const /opt/bb/include/bdlf_bind.h:6014:16
#6 0x555c22ca88f1 in BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&), BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>>>::operator()() const /opt/bb/include/bdlf_bind.h:6023:16
#7 0x555c22ca880a in BloombergLP::bslstl::Function_InvokerUtil_Dispatch<5, void (), BloombergLP::bdlf::Bind<BloombergLP::bslmf::Nil, void (BloombergLP::mqba::AdminSession::*)(BloombergLP::bmqp_ctrlmsg::ControlMessage const&, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>> const&), BloombergLP::bdlf::Bind_BoundTuple3<BloombergLP::mqba::AdminSession*, BloombergLP::bmqp_ctrlmsg::ControlMessage, bsl::basic_string<char, std::__1::char_traits<char>, bsl::allocator<char>>>>>::invoke(BloombergLP::bslstl::Function_Rep const*) /opt/bb/include/bslstl_function_invokerutil.h:967:12
#8 0x555c22c9c9ce in BloombergLP::bslstl::Function_Variadic<void ()>::operator()() const /opt/bb/include/bslstl_function.h:1545:12
#9 0x555c2331b023 in BloombergLP::mqbmock::Dispatcher::processQueue() /blazingmq/src/groups/mqb/mqbmock/mqbmock_dispatcher.cpp:154:9
#10 0x555c22a9820c in (anonymous namespace)::QueueProcessor::run() /blazingmq/src/groups/mqb/mqba/mqba_adminsession.t.cpp:252:29
#11 0x555c22a99ce6 in void BloombergLP::bdlf::MemFn<void ((anonymous namespace)::QueueProcessor::*)()>::operator()<(anonymous namespace)::QueueProcessor*>((anonymous namespace)::QueueProcessor* const&) const /opt/bb/include/bdlf_memfn.h:557:16
#12 0x555c22a99b20 in void BloombergLP::bdlf::Bind_Invoker<void, 1>::invoke<BloombergLP::bdlf::MemFn<void ((anonymous namespace)::QueueProcessor::*)()> const, BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*> const, BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::MemFn<void ((anonymous namespace)::QueueProcessor::*)()> const*, BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*> const*, BloombergLP::bdlf::Bind_ArgTuple0&) const /opt/bb/include/bdlf_bind.h:8610:9
#13 0x555c22a999b1 in void BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>::invokeImpl<BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::Bind_ArgTuple0&, BloombergLP::bslmf::Tag<0u>) const /opt/bb/include/bdlf_bind.h:5950:24
#14 0x555c22a998de in void BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>::invoke<BloombergLP::bdlf::Bind_ArgTuple0>(BloombergLP::bdlf::Bind_ArgTuple0&) const /opt/bb/include/bdlf_bind.h:6014:16
#15 0x555c22a99621 in BloombergLP::bdlf::Bind_ImplExplicit<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>::operator()() const /opt/bb/include/bdlf_bind.h:6023:16
#16 0x555c22a992f0 in BloombergLP::bslmt::EntryPointFunctorAdapter<BloombergLP::bdlf::Bind<BloombergLP::bslmf::Nil, void ((anonymous namespace)::QueueProcessor::*)(), BloombergLP::bdlf::Bind_BoundTuple1<(anonymous namespace)::QueueProcessor*>>>::invokerFunction(void*) /opt/bb/include/bslmt_entrypointfunctoradapter.h:324:5
#17 0x555c232d927a in bslmt_EntryPointFunctorAdapter_invoker /blazingmq/deps/srcs/bde/groups/bsl/bslmt/bslmt_entrypointfunctoradapter.cpp:15:5
#18 0x7f4ea2b3db83 (/lib/x86_64-linux-gnu/libc.so.6+0x9cb83) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
#19 0x7f4ea2bcab63 in clone (/lib/x86_64-linux-gnu/libc.so.6+0x129b63) (BuildId: 328820b908de8ea1ef79afa8995e302e819163d7)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /blazingmq/src/groups/bmq/bmqp/bmqp_schemaeventbuilder.h:241:5
Add a test driver that verifies that concurrent shutdown of mqba::AdminSession is safe with admin commands reaching the broker. Signed-off-by: Evgeny Malygin <emalygin@bloomberg.net>
Signed-off-by: Evgeny Malygin <emalygin@bloomberg.net>
678098
force-pushed
the
260731_mqba_AdminSession_fixes
branch
from
August 3, 2026 15:39
57ec165 to
78c8909
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ClientSession, keep the last reference toAdminSessionon teardown.