[DGD] Fwd: Unusual Driver Crash - what do I do next?
Neil McBride
sarak at castinian.org
Mon Dec 4 05:56:03 CET 2006
Hello all :)
I've recently stumbled across a situation in my ever evolving and
never ending lib that causes the DGD driver to seg fault and dump core
with no messages about the possible cause of the problem. Thinking I
must have managed to create an infinite loop again (like last time), I
started putting debugging messages all over the place to try and track
it down. I'm using DGD 1.2.121 with the kernel lib.
I started tracking back through the suspected parts of my
receive_message code in the user object hoping I'd find the source of
the problem when my screen filled up with garbage messages
continuously just prior to the crash. The crash happens just after I
press 'enter' when my automatic paging system and text menu system are
jostling for the user response queue, but only after they've worked
through the first two pages. It was in this queueing code I was
looking for the problem, but I couldn't find any loops.
So, I hunted through the kernel lib and started dropping small
debugging messages here and there hoping to find a starting point to
look at in my own code. Eventually, I modified the receive_message
function in /kernel/obj/telnet.c to send a message to the player (was
"aaa\n") before it does it's normal thing. This meant I was getting
the extra line of aaa output after I pressed enter and before the
normal responses. I was expecting to get this after the final 'enter'
before the crash, but it doesn't happen this way. It just crashes.
I followed an email from Dworkin last year about tracing the stack but
I don't really know what it means - I think it's saying it tries to
call receive_message in something but I'm not sure what. The last 20
lines or so are at the bottom if that helps anyone.
Where do I go from here?
Thanks,
Neil.
#58145 0x08069814 in i_funcall (prev_f=0xbfe11578, obj=0x80e1a70,
lwobj=0x0, p_ctrli=0xa, funci=0x8, nargs=0x2) at interpret.c:2252
#58146 0x08069f0b in i_call (f=0xbfe11578, obj=0x80e10e8, lwobj=0x0,
func=0xb7e65cca "queue_user_response", len=0x13, call_static=0x0,
nargs=0x4) at interpret.c:2382
#58147 0x080a57a4 in kf_call_other (f=0xbfe11578, nargs=0x6) at std.c:160
#58148 0x08068a23 in i_interpret (f=0xbfe11578, pc=0xb7e8635c
"Y:\037ú̾ÄÃ\002") at interpret.c:1933
#58149 0x08069814 in i_funcall (prev_f=0xbfe117b8, obj=0x80e1818,
lwobj=0x0, p_ctrli=0x4, funci=0x4, nargs=0x7) at interpret.c:2252
#58150 0x08069f0b in i_call (f=0xbfe117b8, obj=0x80e1840, lwobj=0x0,
func=0xb7e655a2 "display_menu", len=0xc, call_static=0x0, nargs=0x1)
at interpret.c:2382
#58151 0x080a57a4 in kf_call_other (f=0xbfe117b8, nargs=0x3) at std.c:160
#58152 0x08068a23 in i_interpret (f=0xbfe117b8, pc=0xb7e96f6c
"\231:\037 at BÃÄÄÄÅÄÆÄ") at interpret.c:1933
#58153 0x08069814 in i_funcall (prev_f=0xbfe11a58, obj=0x80e1ae8,
lwobj=0xb7e8ba28, p_ctrli=0x2, funci=0x4, nargs=0x1) at interpret.c:2252
#58154 0x08069f0b in i_call (f=0xbfe11a58, obj=0x80e1ae8,
lwobj=0xb7e8ba28, func=0xb7e65b32 "input_received", len=0xe,
call_static=0x0, nargs=0x1) at interpret.
c:2382
#58155 0x080a57a4 in kf_call_other (f=0xbfe11a58, nargs=0x3) at std.c:160
#58156 0x08068a23 in i_interpret (f=0xbfe11a58, pc=0xb7e7e721
"I\001\031Ã") at interpret.c:1933
#58157 0x08069814 in i_funcall (prev_f=0xbfe11cb8, obj=0x80e1a70,
lwobj=0x0, p_ctrli=0xa, funci=0x12, nargs=0x8) at interpret.c:2252
#58158 0x08069f0b in i_call (f=0xbfe11cb8, obj=0x80e10e8, lwobj=0x0,
func=0xb7e60d96 "receive_message", len=0xf, call_static=0x0,
nargs=0x1) at interpret.c:2382
#58159 0x080a57a4 in kf_call_other (f=0xbfe11cb8, nargs=0x3) at std.c:160
#58160 0x08068a23 in i_interpret (f=0xbfe11cb8, pc=0xb7e6d05b "\024<")
at interpret.c:1933
#58161 0x08069814 in i_funcall (prev_f=0xbfe11e28, obj=0x80e1458,
lwobj=0x0, p_ctrli=0x1, funci=0xc, nargs=0x1) at interpret.c:2252
#58162 0x08068b8e in i_interpret (f=0xbfe11e28, pc=0xb7e69984 "Y:\037î
\001") at interpret.c:1955
#58163 0x08069814 in i_funcall (prev_f=0x80ca0a0, obj=0x80e0eb8,
lwobj=0x0, p_ctrli=0x2, funci=0x3, nargs=0x0) at interpret.c:2252
#58164 0x08069f0b in i_call (f=0x80ca0a0, obj=0x80e0e90, lwobj=0x0,
func=0x80bda4e "receive_message", len=0xf, call_static=0x1, nargs=0x1)
at interpret.c:2382
#58165 0x08061aab in comm_receive (f=0x80ca0a0, timeout=0x71,
mtime=0x28c) at comm.c:1141
#58166 0x0806e7c2 in dgd_main (argc=0x2, argv=0xbfe14054) at dgd.c:177
#58167 0x080af8bf in main (argc=0x2, argv=0xbfe14054) at local.c:25
More information about the DGD
mailing list