[Bug] Pulsar client can't have static storage duration

Abierto
#56 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
42/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp

Línea de trabajo

Comienza con la reproducción estática mínima de pulsar::Client en Ubuntu e inspecciona pulsar::Client::~Client en /usr/include/pulsar/Client.h. Después, utiliza el backtrace de gdb proporcionado para seguir el apagado y la destrucción del shared-pointer. Confirma que el fallo se produce cuando se ejecuta la destrucción estática sin client.close(); la tarea está completada cuando el programa termina correctamente sin requerir un close explícito.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Search before asking
  • I searched in the 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 <main::_client+8>) 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<pulsar::ClientImpl, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0x51b368 <main::_client>) 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<pulsar::ClientImpl>::~shared_ptr (this=0x51b368 <main::_client>) 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 <main::_client>) 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=<optimized out>) at exit.c:139
#10 0x00007fb5ad91d08a in __libc_start_main (main=0x2df330 <main(int, char**)>, argc=3, argv=0x7ffd9fae0c18, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, 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!
Lenguaje dominante
C++
Estrellas
72
Forks
93
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/pulsar-client-cpp

Todos los issues de apache/pulsar-client-cpp

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.