In the case above,
packet->universal = NULL
So trying to update the (linked list) "packet_list" pointer causes the segfault:
if (packet->universal->packet_list == packet)
Is the call to gearman_packet_free() (libgearman/worker.cc:788) correct for "NO_JOB"?
In the case above, >universal- >packet_ list == packet)
packet->universal = NULL
So trying to update the (linked list) "packet_list" pointer causes the segfault:
if (packet-
Is the call to gearman_ packet_ free() (libgearman/ worker. cc:788) correct for "NO_JOB"?
Here's the whole "packet": MAGIC_RESPONSE, command = GEARMAN_ COMMAND_ NO_JOB, argc = 0 '\000', args_size = 12, 000\000\ 000\n", '\000' <repeats 119 times>}
$4 = {options = {allocated = false, complete = false, free_data = false}, magic = GEARMAN_
data_size = 0, universal = 0x0, next = 0x0, prev = 0x0, args = 0x214f270 "", data = 0x0, arg = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, arg_size = {0, 0, 0, 0, 0, 0, 0, 0},
args_buffer = "\000RES\
Up one level of the stack, the "job" (worker->job) is:
$2 = {options = {allocated = true, assigned_in_use = false, work_in_use = false, finished = false}, worker = 0x1ffc598, next = 0x0, prev = 0x0, con = 0x0, assigned = { MAGIC_RESPONSE, command = GEARMAN_ COMMAND_ NO_JOB, argc = 0 '\000', args_size = 12, 000\000\ 000\n", '\000' <repeats 119 times>}, work = {options = {allocated = false, complete = false, free_data = false}, COMMAND_ TEXT, argc = 0 '\000', args_size = 0, data_size = 0, universal = 0x0, next = 0x0, prev = 0x0, args = 0x0, data = 0x0, UNKNOWN_ STATE}
options = {allocated = false, complete = false, free_data = false}, magic = GEARMAN_
data_size = 0, universal = 0x0, next = 0x0, prev = 0x0, args = 0x214f270 "", data = 0x0, arg = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, arg_size = {0, 0, 0, 0, 0, 0, 0,
0}, args_buffer = "\000RES\
magic = GEARMAN_MAGIC_TEXT, command = GEARMAN_
arg = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, arg_size = {0, 0, 0, 0, 0, 0, 0, 0}, args_buffer = '\000' <repeats 127 times>}, reducer = 0x0,
error_code = GEARMAN_