Hi,guys. The client get sigal SIGSEGV and output the call trace as follows.
/usr/local/lib/libaerospike.so(as_queue_pop+0x2c) [0x7f47d15ba414]
/usr/local/lib/libaerospike.so(as_event_node_destroy+0x76) [0x7f47d15a1111]
/usr/local/lib/libaerospike.so(as_node_destroy+0x8c) [0x7f47d15a3c61]
/usr/local/lib/libaerospike.so(+0x439b9) [0x7f47d15a69b9]
/usr/local/lib/libaerospike.so(as_partition_tables_update_all+0x3b1) [0x7f47d15a7527]
/usr/local/lib/libaerospike.so(as_node_refresh_partitions+0x219) [0x7f47d15a4d0d]
/usr/local/lib/libaerospike.so(as_cluster_tend+0x6f3) [0x7f47d159cbe3]
/usr/local/lib/libaerospike.so(+0x3a190) [0x7f47d159d190]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x8182) [0x7f47d1817182]
bool
as_queue_pop(as_queue* queue, void* ptr)
{
if (as_queue_empty(queue)) {
return false;
}
memcpy(ptr, as_queue_get(queue, queue->head), queue->item_size);
queue->head++; -------------------------- **the fault line**
// This probably keeps the cache fresher because the queue is
fully empty.
if (queue->head == queue->tail) {
queue->head = queue->tail = 0;
}
return true;
}
Does the coredump has relation with that the appliation passes the as->cluster NULL pointer when do some operation. My application has such a leak probably.
Best Regards,
Steve