apache / apache/pulsar-client-cpp

When use pulsar::Message msg = pulsar::MessageBuilder().setContent(sMsg).build() to Create Message, sometimes it will occur segment fault

Aberta
#476 4 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
C++
Estrelas
71
Forks
90
Merge médio
2h 33min
PRs com merge (30d)
3

Descrição

(gdb) bt
#0 pop (this=0x7f2b58df7900) at pulsar-client-3.4/lib/ObjectPool.h:74
#1 allocate (this=0x7f2b58df7900) at pulsar-client-3.4/lib/ObjectPool.h:134
#2 allocate (n=1, this=) at pulsar-client-3.4/lib/ObjectPool.h:167
#3 allocate (__a=, __n=1) at /usr/local/gcc-4.9.3/include/c++/4.9.3/bits/alloc_traits.h:357
#4 __shared_count > (__a=..., this=0x7f2b3e589ea8)
at /usr/local/gcc-4.9.3/include/c++/4.9.3/bits/shared_ptr_base.h:616
#5 __shared_ptr > (__a=..., __tag=..., this=0x7f2b3e589ea0,
this@entry=)
at /usr/local/gcc-4.9.3/include/c++/4.9.3/bits/shared_ptr_base.h:1090
#6 shared_ptr > (__a=..., __tag=..., this=0x7f2b3e589ea0)
at /usr/local/gcc-4.9.3/include/c++/4.9.3/bits/shared_ptr.h:316
#7 allocate_shared > (__a=...)
at /usr/local/gcc-4.9.3/include/c++/4.9.3/bits/shared_ptr.h:588
#8 create (this=0x2622ba0 ) at pulsar-client-3.4/lib/ObjectPool.h:212
#9 pulsar::MessageBuilder::createMessageImpl () at pulsar-client-3.4/lib/MessageBuilder.cc:42

(gdb) print head_
Cannot access memory at address 0x7f2b58df7900
(gdb) print result
$1 = (void *) 0x1

void* pop() {
if (!head_) {
// size = 0
std::lock_guard lock(mutex_);

if (!globalPool_) {
return NULL;
}

GlobalPool* poolEntry = globalPool_;
head_ = globalPool_->node_;
pushSize_ += globalPool_->nodeCount_;
globalNodeCount_ -= globalPool_->nodeCount_;
globalPool_ = globalPool_->next_;
delete poolEntry;
}
void* result = head_;
if (result) {
head_ = head_->next;
pushSize_--;
}
return result;
}

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece reproduzindo o segfault de MessageBuilder::createMessageImpl em pulsar-client-3.4/lib/MessageBuilder.cc:42, usando o rastreamento do GDB como sintoma inicial. Inspecione ObjectPool.h, especialmente pop, allocate e create, e determine por que head_ ou o estado do pool se torna inválido. O trabalho estará concluído quando construir uma mensagem com MessageBuilder não causar mais uma falha nas condições relatadas, com uma verificação de regressão para a falha.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
cpp
Domínio
distributed-systems
Tipo de issue
Bug
Dificuldade
4/5
Tempo estimado
3-5 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.