Comment 4 for bug 1078237

Revision history for this message
Goran Miskovic (schkovich) wrote :

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)