Skip to content

[Bug] testNegativeAckPrecisionBitCnt could cause segmentation fault #513

@BewareMyPower

Description

@BewareMyPower

Search before asking

  • I searched in the issues and found nothing similar.

Version

master

Minimal reproduce step

Run this test

What did you expect to see?

success

What did you see instead?

crash

* thread #3, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    frame #0: 0x0000000100339c98 pulsar-tests`pulsar::RetryableLookupService::getPartitionMetadataAsync(this=0x0000600002b08208)::'lambda'()::operator()() const at RetryableLookupService.h:63:56
   60  	    Future<Result, LookupDataResultPtr> getPartitionMetadataAsync(const TopicNamePtr& topicName) override {
   61  	        return partitionLookupCache_->run(
   62  	            "get-partition-metadata-" + topicName->toString(),
-> 63  	            [this, topicName] { return lookupService_->getPartitionMetadataAsync(topicName); });
   64  	    }
   65
   66  	    Future<Result, NamespaceTopicsPtr> getTopicsOfNamespaceAsync(
Target 0: (pulsar-tests) stopped.
(lldb) bt
* thread #3, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x0000000100339c98 pulsar-tests`pulsar::RetryableLookupService::getPartitionMetadataAsync(this=0x0000600002b08208)::'lambda'()::operator()() const at RetryableLookupService.h:63:56
    frame #1: 0x0000000100339c58 pulsar-tests`decltype(std::declval<pulsar::RetryableLookupService::getPartitionMetadataAsync(std::__1::shared_ptr<pulsar::TopicName> const&)::'lambda'()&>()()) std::__1::__invoke[abi:ne180100]<pulsar::RetryableLookupService::getPartitionMetadataAsync(std::__1::shared_ptr<pulsar::TopicName> const&)::'lambda'()&>(__f=0x0000600002b08208) at invoke.h:344:25
    frame #2: 0x0000000100339c08 pulsar-tests`pulsar::Future<pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult>> std::__1::__invoke_void_return_wrapper<pulsar::Future<pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult>>, false>::__call[abi:ne180100]<pulsar::RetryableLookupService::getPartitionMetadataAsync(std::__1::shared_ptr<pulsar::TopicName> const&)::'lambda'()&>(__args=0x0000600002b08208) at invoke.h:411:12
    frame #3: 0x0000000100339bdc pulsar-tests`std::__1::__function::__alloc_func<pulsar::RetryableLookupService::getPartitionMetadataAsync(std::__1::shared_ptr<pulsar::TopicName> const&)::'lambda'(), std::__1::allocator<pulsar::RetryableLookupService::getPartitionMetadataAsync(std::__1::shared_ptr<pulsar::TopicName> const&)::'lambda'()>, pulsar::Future<pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult>> ()>::operator()[abi:ne180100](this=0x0000600002b08208) at function.h:169:12
    frame #4: 0x0000000100338978 pulsar-tests`std::__1::__function::__func<pulsar::RetryableLookupService::getPartitionMetadataAsync(std::__1::shared_ptr<pulsar::TopicName> const&)::'lambda'(), std::__1::allocator<pulsar::RetryableLookupService::getPartitionMetadataAsync(std::__1::shared_ptr<pulsar::TopicName> const&)::'lambda'()>, pulsar::Future<pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult>> ()>::operator()(this=0x0000600002b08200) at function.h:311:10
    frame #5: 0x000000010032fd60 pulsar-tests`std::__1::__function::__value_func<pulsar::Future<pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult>> ()>::operator()[abi:ne180100](this=0x000000013b809440) const at function.h:428:12
    frame #6: 0x000000010032fb9c pulsar-tests`std::__1::function<pulsar::Future<pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult>> ()>::operator()(this= Lambda in File RetryableLookupService.h at Line 63) const at function.h:981:10
    frame #7: 0x000000010032fa24 pulsar-tests`pulsar::RetryableOperation<std::__1::shared_ptr<pulsar::LookupDataResult>>::runImpl(this=0x000000013b809418, remainingTime=(__rep_ = 29900000000)) at RetryableOperation.h:90:9
    frame #8: 0x000000010033306c pulsar-tests`pulsar::RetryableOperation<std::__1::shared_ptr<pulsar::LookupDataResult>>::runImpl(this=0x000000016ff12810, ec=0x000000016ff12830)::'lambda'(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&)::operator()(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&) const::'lambda'(std::__1::error_code const&)::operator()(std::__1::error_code const&) const at RetryableOperation.h:129:21
    frame #9: 0x0000000100332ba4 pulsar-tests`asio::detail::binder1<pulsar::RetryableOperation<std::__1::shared_ptr<pulsar::LookupDataResult>>::runImpl(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>)::'lambda'(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&)::operator()(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&) const::'lambda'(std::__1::error_code const&), std::__1::error_code>::operator()(this=0x000000016ff12810) at bind_handler.hpp:114:5
    frame #10: 0x00000001003329e4 pulsar-tests`void asio::detail::handler_work<pulsar::RetryableOperation<std::__1::shared_ptr<pulsar::LookupDataResult>>::runImpl(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>)::'lambda'(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&)::operator()(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&) const::'lambda'(std::__1::error_code const&), asio::any_io_executor, void>::complete<asio::detail::binder1<pulsar::RetryableOperation<std::__1::shared_ptr<pulsar::LookupDataResult>>::runImpl(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>)::'lambda'(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&)::operator()(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&) const::'lambda'(std::__1::error_code const&), std::__1::error_code>>(this=0x000000016ff12880, function=0x000000016ff12810, handler=0x000000016ff12810) at handler_work.hpp:469:7
    frame #11: 0x000000010033276c pulsar-tests`asio::detail::wait_handler<pulsar::RetryableOperation<std::__1::shared_ptr<pulsar::LookupDataResult>>::runImpl(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l>>)::'lambda'(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&)::operator()(pulsar::Result, std::__1::shared_ptr<pulsar::LookupDataResult> const&) const::'lambda'(std::__1::error_code const&), asio::any_io_executor>::do_complete(owner=0x000000013b6044d0, base=0x000000014b726c50, (null)=0x000000016ff12ae8, (null)=0) at wait_handler.hpp:75:9
    frame #12: 0x0000000100063440 pulsar-tests`asio::detail::scheduler_operation::complete(this=0x000000014b726c50, owner=0x000000013b6044d0, ec=0x000000016ff12ae8, bytes_transferred=0) at scheduler_operation.hpp:39:5
    frame #13: 0x0000000100062d60 pulsar-tests`asio::detail::scheduler::do_run_one(this=0x000000013b6044d0, lock=0x000000016ff129c8, this_thread=0x000000016ff12a00, ec=0x000000016ff12ae8) at scheduler.ipp:492:12
    frame #14: 0x00000001000629c8 pulsar-tests`asio::detail::scheduler::run(this=0x000000013b6044d0, ec=0x000000016ff12ae8) at scheduler.ipp:209:10
    frame #15: 0x000000010074d640 pulsar-tests`asio::io_context::run(this=0x0000600001e30028) at io_context.ipp:63:24
    frame #16: 0x000000010074d124 pulsar-tests`pulsar::ExecutorService::start()::$_0::operator()(this=0x0000600002b30328) const at ExecutorService.cc:39:29
    frame #17: 0x000000010074cfc8 pulsar-tests`decltype(std::declval<pulsar::ExecutorService::start()::$_0>()()) std::__1::__invoke[abi:ne180100]<pulsar::ExecutorService::start()::$_0>(__f=0x0000600002b30328) at invoke.h:344:25
    frame #18: 0x000000010074cfa4 pulsar-tests`void std::__1::__thread_execute[abi:ne180100]<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, pulsar::ExecutorService::start()::$_0>(__t=size=2, (null)=__tuple_indices<> @ 0x000000016ff12f7f) at thread.h:199:3
    frame #19: 0x000000010074cbb4 pulsar-tests`void* std::__1::__thread_proxy[abi:ne180100]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, pulsar::ExecutorService::start()::$_0>>(__vp=0x0000600002b30320) at thread.h:208:3
    frame #20: 0x00000001841d32e4 libsystem_pthread.dylib`_pthread_start + 136
(lldb) p lookupService_
(const std::shared_ptr<pulsar::LookupService>) nullptr {
  __ptr_ = nullptr
}

Anything else?

No response

Are you willing to submit a PR?

  • I'm willing to submit a PR!

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions