Subject: Re: GDB busted, what did I do to deserve this?
To: Craig M. Chase <chase@ece.utexas.edu>
From: Open Carefully -- Contents Under Pressure <greywolf@defender.VAS.viewlogic.com>
List: current-users
Date: 11/15/1995 10:00:16
#define AUTHOR "chase@pine.ece.utexas.edu ("Craig M. Chase")"
/*
* Well, it has been about two weeks, and I've not seen anybody else
* complain, so I must conclude that I am the only person with this
* malady, and that I have somehow inflicted this pain on myself.
*
* gdb broke thoroughly around about the start of November when I
* upgraded to a NetBSD-1.1ALPHA (i386) kernel and system.
*
* I have two Pentium systems that are suffering from this problem.
*
* The synopsis:
*
* chase@orac>/usr/bin/cc -g -static -o hello hello.c
* chase@orac>/usr/bin/gdb hello
* GDB is free software and you are welcome to distribute copies of it
* under certain conditions; type "show copying" to see the conditions.
* There is absolutely no warranty for GDB; type "show warranty" for details.
* GDB 4.11 (i386-netbsd), Copyright 1993 Free Software Foundation, Inc...
* (gdb) break main
* Breakpoint 1 at 0x1098: file hello.c, line 5.
* (gdb) run
* Starting program: /a/orac/home/orac/chase/src/hello
*
* Breakpoint 1, main () at hello.c:5
* 5 printf("hello world\n");
* (gdb) n
*
* Program received signal SIGSEGV (11), Segmentation fault
* 0x1099 in main () at hello.c:5
Just a guess, but I would say that the "0x1099" is a good sign that
something is quite amiss.
I didn't think an x86 processor was capable of executing instructions
based at unaligned addresses, although I'm not sure of what constitutes
an unaligned address. I would suspect that x86 stuff is at least word-
aligned, if not long-aligned.
Now, if you run the program by itself, does it still dump core?
I have no idea *why* gdb would fail here as I am not a compiler/debugger
type person, but it would appear that it's trying to literally "single-
step" (i.e. address-at-a-time-in-increments-of-one-which-unfortunately-
are-not-longword-or-word-aligned) through the program.
I'm hoping that this attempted guess at useful information might tip off a
more knowledgeable debugger/compiler type person.
* 5 printf("hello world\n");
* (gdb) print "ARRRRHHGGGG!"
*
* Program received signal SIGSEGV (11), Segmentation fault
* 0x1099 in main () at hello.c:5
* 5 printf("hello world\n");
* The program being debugged stopped while in a function called from GDB.
* When the function (malloc) is done executing, GDB will silently
* stop (instead of continuing to evaluate the expression containing
* the function call).
* (gdb) quit
* The program is running. Quit anyway (and kill it)? (y or n) y
*/
#undef AUTHOR /* "chase@pine.ece.utexas.edu ("Craig M. Chase")" */
--*greywolf;
--
Friends don't let friends use System V.