I have recently run into a problem analyzing core dumps
on Linux. When I do a backtrace the line where the mud
crashed is missing. here is the output:
This GDB was configured as "i586-slackware-linux"...
warning: exec file is newer than core file.
Core was generated by `bin/circle 4000'.
Program terminated with signal 6, IOT trap/Abort.
Reading symbols from /lib/libc.so.5...done.
Reading symbols from /lib/ld-linux.so.1...done.
#0 0x40072a89 in __kill ()
(gdb) where
#0 0x40072a89 in __kill ()
#1 0x400418c9 in gsignal ()
#2 0x804fdc0 in nasty_signal_handler (sig=11) at comm.c:2233
#3 0xbffff848 in ?? ()
#4 0x811ea52 in command_interpreter (ch=0x89a3a18, argument=0xbffff964
"purge cow") at interpreter.c:1167
#5 0x804af54 in game_loop (mother_desc=3) at comm.c:752
#6 0x8049bba in init_game () at comm.c:326
#7 0x8049ac4 in main (argc=2, argv=0xbffffcf4) at comm.c:283
#8 0x80496ee in _start ()
(gdb) up
#3 0xbffff848 in ?? ()
(gdb) list
2238 /*
2239 * This is an implementation of signal() using sigaction() for
portability.
2240 * (sigaction() is POSIX; signal() is not.) Taken from Stevens'
_Advanced
2241 * Programming in the UNIX Environment_. We are specifying that
all system
2242 * calls _not_ be automatically restarted for uniformity, because
BSD systems
2243 * do not restart select(), even if SA_RESTART is used.
2244 *
2245 * Note that NeXT 2.x is not POSIX and does not have sigaction;
therefore,
2246 * I just define it to be the old signal. If your system doesn't
have
2247 * sigaction either, you can use the same fix.
(gdb) up
#4 0x811ea52 in command_interpreter (ch=0x89a3a18, argument=0xbffff964
"purge cow") at interpreter.c:1167
1167 if (no_specials || !special(ch, cmd, line))
(gdb) list
1162 GET_NAME(ch),
1163 IN_ROOM(ch) ? GET_ROOM_VNUM(IN_ROOM(ch)) : 0,
1164 IN_ROOM(ch) ? world[IN_ROOM(ch)].name : "(not in a
room)",
1165 cmd_info[cmd].command, line);
1166
1167 if (no_specials || !special(ch, cmd, line))
1168 ((*cmd_info[cmd].command_pointer)
(ch,line,cmd,cmd_info[cmd].subcmd));
1169 sprintf (last_command,
1170 "(Finished) [%5ld] %s in [%5ld] %s:\n %s%s",
1171 IS_NPC(ch) ? GET_MOB_VNUM(ch) : GET_IDNUM(ch),
I can tell that it crashed in a special procedure, just not which one.
Here is my system info:
> uname -a
Linux valiant 2.0.34 #1 Thu Jun 4 18:59:35 PDT 1998 i686 unknown
% gdb -version
GNU gdb 4.17
% gcc --version
egcs-2.90.29 980515 (egcs-1.0.3 release)
Has anyone seen this behavior before? I have the coredumpsize set to
unlimited
and AM using the -g switch to compile.
Thanx,
--Angus
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST