Open BewareMyPower opened 1 year ago
This issue is hard to avoid because it happens when the destructor of a std::shared_ptr
is called from the libpulsar.so
while libpulsar.so
is already unloaded by the Python interpreter.
We can see the crash happened in ConsumerImpl::shutdown
:
#10 std::shared_ptr<pulsar::ClientImpl>::~shared_ptr (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/c++/9/bits/shared_ptr.h:103
#11 pulsar::ConsumerImpl::shutdown (this=<optimized out>) at /home/xyz/github.com/apache/pulsar-client-cpp/lib/ConsumerImpl.cc:1267
#12 0x00007ffff7123a5e in pulsar::ConsumerImpl::~ConsumerImpl (this=0x7ffff0003250, __in_chrg=<optimized out>)
at /home/xyz/github.com/apache/pulsar-client-cpp/lib/ConsumerImpl.cc:164
auto client = client_.lock();
Even if I commented the client_.lock()
related code, it now happened when constructing a Message
object in shutdown
:
#10 std::shared_ptr<pulsar::MessageImpl>::~shared_ptr (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/c++/9/bits/shared_ptr.h:103
#11 pulsar::Message::~Message (this=<optimized out>, __in_chrg=<optimized out>) at /home/xyz/github.com/apache/pulsar-client-cpp/include/pulsar/Message.h:43
#12 pulsar::ConsumerImpl::failPendingReceiveCallback (this=<optimized out>) at /home/xyz/github.com/apache/pulsar-client-cpp/lib/ConsumerImpl.cc:622
#13 0x00007ffff7122cd0 in pulsar::ConsumerImpl::shutdown (this=0x7ffff0003250) at /home/xyz/github.com/apache/pulsar-client-cpp/lib/ConsumerImpl.cc:1274
Message msg;
Reproduce:
Press Ctrl+C and you will see:
After enabling the debug level logs, you will see:
The stack: