I been playing a bit. :) Does not mean much to me but hopefully it might save you some time.
Worker used for testing: http://ubuntuone.com/4gcsbr4JB8jLcUJP5GgnYq Full stack trace having timeout set to 3000: http://ubuntuone.com/324t6c09M61PV0pEnJxys1 Full stack trace no timeout set (seg fault after receiving job): http://ubuntuone.com/0P9CWIvrFbItYkQ2WdHIwM
Stack traces are the same which makes sense. In the first case $worker->wait() will continue after 3 sec e.g. timeout reached while in the second case $worker->wait() will wait on socket activity.
Breakpoint 1, gearman_connection_st::free_private_packet (this=0x10a06d0) at libgearman/connection.cc:338 338 gearman_packet_free(&_packet); (gdb) print _packet $17 = {options = {is_allocated = false, complete = false, free_data = false}, magic = GEARMAN_MAGIC_TEXT, command = GEARMAN_COMMAND_TEXT, argc = 0 '\000', args_size = 0, data_size = 0, universal = 0x0, next = 0x0, prev = 0x0, args = 0x0, data = 0x0, arg = {0x10a083c "exceptions", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, arg_size = {10, 0, 0, 0, 0, 0, 0, 0}, args_buffer = "\000RES\000\000\000\033\000\000\000\nexceptions", '\000' <repeats 105 times>} (gdb) step gearman_packet_free (packet=0x10a0768) at libgearman/packet.cc:271 271 if (packet->args != packet->args_buffer and packet->args) (gdb) step 280 if (packet->options.free_data and packet->data) (gdb) step 289 if (packet->universal->packet_list == packet) (gdb) print packet->universal->packet_list Cannot access memory at address 0x28 (gdb)
I been playing a bit. :) Does not mean much to me but hopefully it might save you some time.
Worker used for testing: http:// ubuntuone. com/4gcsbr4JB8j LcUJP5GgnYq ubuntuone. com/324t6c09M61 PV0pEnJxys1 ubuntuone. com/0P9CWIvrFbI tYkQ2WdHIwM
Full stack trace having timeout set to 3000: http://
Full stack trace no timeout set (seg fault after receiving job): http://
Stack traces are the same which makes sense. In the first case $worker->wait() will continue after 3 sec e.g. timeout reached while in the second case $worker->wait() will wait on socket activity.
Breakpoint 1, gearman_ connection_ st::free_ private_ packet (this=0x10a06d0) at libgearman/ connection. cc:338 packet_ free(&_ packet) ; COMMAND_ TEXT, argc = 0 '\000', args_size = 0, data_size = 0, universal = 0x0, next = 0x0, prev = 0x0, 000\000\ 000\033\ 000\000\ 000\nexceptions ", '\000' <repeats 105 times>} packet. cc:271 >options. free_data and packet->data) >universal- >packet_ list == packet) >universal- >packet_ list
338 gearman_
(gdb) print _packet
$17 = {options = {is_allocated = false, complete = false, free_data = false}, magic = GEARMAN_MAGIC_TEXT,
command = GEARMAN_
args = 0x0, data = 0x0, arg = {0x10a083c "exceptions", 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, arg_size = {10, 0, 0, 0, 0, 0, 0, 0},
args_buffer = "\000RES\
(gdb) step
gearman_packet_free (packet=0x10a0768) at libgearman/
271 if (packet->args != packet->args_buffer and packet->args)
(gdb) step
280 if (packet-
(gdb) step
289 if (packet-
(gdb) print packet-
Cannot access memory at address 0x28
(gdb)