[SYSTEM]Problems with Linux GDB

From: Angus Mezick (amezick@edgil.com)
Date: 01/14/99


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