apache / apache/pulsar-client-cpp
[Bug] Pulsar client can't have static storage duration
- Ngôn ngữ chính
- C++
- Star
- 71
- Fork
- 90
- Merge trung bình
- 2 giờ 33 phút
- Pull request đã merge (30 ngày)
- 3
Mô tả
### Search before asking
- [X] I searched in the [issues](https://github.com/apache/pulsar-client-cpp/issues) and found nothing similar.
### Version
- pulsar client 2.9.0
- ubuntu linux
### Minimal reproduce step
int main(int argc, char** argv)
{
static ::pulsar::Client client{"pulsar://0.0.0.0:6650"};
// don't call client.close();
return 0;
}
### What did you expect to see?
The program should terminate gracefully, instead it seg faults. If I call client.close(), there is no issue.
### What did you see instead?
The program seg faults with the following trace:
In gdb:
```
Program received signal SIGSEGV, Segmentation fault.
0x000000000000001e in ?? ()
(gdb) bt
#0 0x000000000000001e in ?? ()
#1 0x00007fb5adff4bef in ?? () from /lib/libpulsar.so.2.9.2.13
#2 0x00007fb5adff76e4 in ?? () from /lib/libpulsar.so.2.9.2.13
#3 0x00000000002e0873 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0xb1e400) at /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:155
#4 0x00000000002e082a in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0x51b370 ) at /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:730
#5 0x00000000002e0f29 in std::__shared_ptr::~__shared_ptr (this=0x51b368 ) at /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:1169
#6 0x00000000002e0f05 in std::shared_ptr::~shared_ptr (this=0x51b368 ) at /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr.h:103
#7 0x00000000002dfde5 in pulsar::Client::~Client (this=0x51b368 ) at /usr/include/pulsar/Client.h:46
#8 0x00007fb5ad93f8a7 in __run_exit_handlers (status=0, listp=0x7fb5adae5718 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:108
#9 0x00007fb5ad93fa60 in __GI_exit (status=) at exit.c:139
#10 0x00007fb5ad91d08a in __libc_start_main (main=0x2df330 , argc=3, argv=0x7ffd9fae0c18, init=, fini=, rtld_fini=, stack_end=0x7ffd9fae0c08) at ../csu/libc-start.c:342
#11 0x00000000002df26e in _start ()
```
### Anything else?
_No response_
### Are you willing to submit a PR?
- [ ] I'm willing to submit a PR!
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với bản tái hiện tĩnh tối thiểu của pulsar::Client trên Ubuntu và kiểm tra pulsar::Client::~Client trong /usr/include/pulsar/Client.h, sau đó sử dụng gdb backtrace được cung cấp để theo dõi quá trình shutdown và hủy shared-pointer. Xác nhận rằng lỗi xảy ra khi quá trình hủy tĩnh chạy mà không có client.close(); hoàn thành khi chương trình thoát một cách bình thường mà không yêu cầu close rõ ràng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp
- Lĩnh vực
- distributed-systems
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 42/100