Aerospike client panic


#1

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