tschwinge@blubber:~/tmp/gdb/HEAD.build $ echo 'void main(void){*(volatile int *)0;}' |
> gcc -o 0 -x c -
<stdin>: In function ‘main’:
<stdin>:1: warning: return type of ‘main’ is not ‘int’
tschwinge@blubber:~/tmp/gdb/HEAD.build $ ./0
Segmentation fault
tschwinge@blubber:~/tmp/gdb/HEAD.build $ gdb/gdb 0
GNU gdb (GDB) 7.0.50.20091111-cvs
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-unknown-gnu0.3".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /media/data/home/tschwinge/tmp/gdb/HEAD.build/0...done.
(gdb) r
Starting program: /media/data/home/tschwinge/tmp/gdb/HEAD.build/0
Can't fetch registers from thread bogus thread id 1: No such thread
(gdb) quit
A debugging session is active.
Inferior 1 [bogus thread id 0] will be killed.
Quit anyway? (y or n) y
GDB's gcore command doesn't work / needs to be implemented / ported in GDB:
tschwinge@flubber:~ $ gcore 8371
[New Thread 8371.1]
[New Thread 8371.2]
[New Thread 8371.3]
/media/data/home/tschwinge/core.cA0ICY:2: Error in sourced command file:
Undefined command: "gcore". Try "help".
gcore: failed to create core.8371
(gdb) r
Starting program: /media/data/home/tschwinge/tmp/h
[New Thread 26731.15]
Breakpoint 1, 0x08048236 in main ()
(gdb) info threads
5 Thread 26731.15 0x080a97fc in mach_msg_trap ()
* 4 Thread 26731.14 0x08048236 in main ()
(gdb) thread 5
[Switching to thread 5 (Thread 26731.15)]#0 0x080a97fc in mach_msg_trap ()
(gdb) bt
#0 0x080a97fc in mach_msg_trap ()
#1 0x080a272e in mach_msg ()
#2 0x080a9934 in mach_msg_server_timeout ()
#3 0x080a99ff in mach_msg_server ()
#4 0x080a327e in _hurd_msgport_receive ()
Cannot access memory at address 0x1012000
Here's a log of a GDB testsuite run; this is from 2009-07-20 HEAD sources.
make[1]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build'
make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
Making check in doc
make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd/doc'
make[3]: Nothing to be done for `check'.
make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd/doc'
Making check in po
make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd/po'
make[3]: Nothing to be done for `check'.
make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd/po'
make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
make[3]: Nothing to be done for `check-am'.
make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/bfd'
make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes'
Making check in po
make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes/po'
make[3]: Nothing to be done for `check'.
make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes/po'
make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes'
make[3]: Nothing to be done for `check-am'.
make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes'
make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/opcodes'
make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/etc'
make[2]: Nothing to be done for `check'.
make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/etc'
make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/intl'
make[2]: Nothing to be done for `check'.
make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/intl'
make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libdecnumber'
make[2]: Nothing to be done for `check'.
make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libdecnumber'
make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libiberty'
make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libiberty/testsuite'
gcc -DHAVE_CONFIG_H -g -O2 -I.. -I../../../HEAD/src/libiberty/testsuite/../../include -o test-demangle \
../../../HEAD/src/libiberty/testsuite/test-demangle.c ../libiberty.a
./test-demangle < ../../../HEAD/src/libiberty/testsuite/demangle-expected
./test-demangle: 777 tests, 0 failures
gcc -DHAVE_CONFIG_H -g -O2 -I.. -I../../../HEAD/src/libiberty/testsuite/../../include -DHAVE_CONFIG_H -I.. -o test-pexecute \
../../../HEAD/src/libiberty/testsuite/test-pexecute.c ../libiberty.a
./test-pexecute
gcc -DHAVE_CONFIG_H -g -O2 -I.. -I../../../HEAD/src/libiberty/testsuite/../../include -DHAVE_CONFIG_H -I.. -o test-expandargv \
../../../HEAD/src/libiberty/testsuite/test-expandargv.c ../libiberty.a
./test-expandargv
PASS: test-expandargv-0.
PASS: test-expandargv-1.
PASS: test-expandargv-2.
PASS: test-expandargv-3.
make[3]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libiberty/testsuite'
make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/libiberty'
make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/readline'
make[2]: Nothing to be done for `check'.
make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/readline'
make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/sim'
make[2]: Leaving directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/sim'
make[2]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb'
make[3]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite'
make -k check-gdb.base1 check-gdb.base2 check-gdb.ada check-gdb.arch check-gdb.asm check-gdb.cp check-gdb.disasm check-gdb.dwarf2 check-gdb.fortran check-gdb.gdb check-gdb.java check-gdb.mi check-gdb.modula2 check-gdb.objc check-gdb.opt check-gdb.pascal check-gdb.python check-gdb.reverse check-gdb.server check-gdb.stabs check-gdb.threads check-gdb.trace check-gdb.xml; \
/bin/sh ../../../HEAD/src/gdb/testsuite/dg-extract-results.sh \
gdb.base1/gdb.sum gdb.base2/gdb.sum gdb.ada/gdb.sum gdb.arch/gdb.sum gdb.asm/gdb.sum gdb.cp/gdb.sum gdb.disasm/gdb.sum gdb.dwarf2/gdb.sum gdb.fortran/gdb.sum gdb.gdb/gdb.sum gdb.java/gdb.sum gdb.mi/gdb.sum gdb.modula2/gdb.sum gdb.objc/gdb.sum gdb.opt/gdb.sum gdb.pascal/gdb.sum gdb.python/gdb.sum gdb.reverse/gdb.sum gdb.server/gdb.sum gdb.stabs/gdb.sum gdb.threads/gdb.sum gdb.trace/gdb.sum gdb.xml/gdb.sum > gdb.sum; \
/bin/sh ../../../HEAD/src/gdb/testsuite/dg-extract-results.sh -L \
gdb.base1/gdb.log gdb.base2/gdb.log gdb.ada/gdb.log gdb.arch/gdb.log gdb.asm/gdb.log gdb.cp/gdb.log gdb.disasm/gdb.log gdb.dwarf2/gdb.log gdb.fortran/gdb.log gdb.gdb/gdb.log gdb.java/gdb.log gdb.mi/gdb.log gdb.modula2/gdb.log gdb.objc/gdb.log gdb.opt/gdb.log gdb.pascal/gdb.log gdb.python/gdb.log gdb.reverse/gdb.log gdb.server/gdb.log gdb.stabs/gdb.log gdb.threads/gdb.log gdb.trace/gdb.log gdb.xml/gdb.log > gdb.log
make[4]: Entering directory `/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite'
Nothing to be done for all...
Making a new config file...
rootme=`pwd`; export rootme; srcdir=../../../HEAD/src/gdb/testsuite ; export srcdir ; EXPECT=`if [ -f ${rootme}/../../expect/expect ] ; then echo ${rootme}/../../expect/expect ; else echo expect ; fi` ; export EXPECT ; EXEEXT= ; export EXEEXT ; LD_LIBRARY_PATH=$rootme/../../expect:$rootme/../../libstdc++:$rootme/../../tk/unix:$rootme/../../tcl/unix:$rootme/../../bfd:$rootme/../../opcodes:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; if [ -f ${rootme}/../../expect/expect ] ; then TCL_LIBRARY=${srcdir}/../../tcl/library ; export TCL_LIBRARY ; fi ; runtest gdb.base/a2-run.exp gdb.base/advance.exp gdb.base/all-bin.exp gdb.base/annota1.exp gdb.base/annota3.exp gdb.base/args.exp gdb.base/arithmet.exp gdb.base/arrayidx.exp gdb.base/assign.exp gdb.base/async.exp gdb.base/attach.exp gdb.base/auxv.exp gdb.base/bang.exp gdb.base/bfp-test.exp gdb.base/bigcore.exp gdb.base/bitfields.exp gdb.base/bitfields2.exp gdb.base/bitops.exp gdb.base/break-always.exp gdb.base/break.exp gdb.base/breakpoint-shadow.exp gdb.base/call-ar-st.exp gdb.base/call-rt-st.exp gdb.base/call-sc.exp gdb.base/call-signal-resume.exp gdb.base/call-strs.exp gdb.base/callexit.exp gdb.base/callfuncs.exp gdb.base/charset.exp gdb.base/checkpoint.exp gdb.base/chng-syms.exp gdb.base/code-expr.exp gdb.base/commands.exp gdb.base/completion.exp gdb.base/complex.exp gdb.base/cond-expr.exp gdb.base/condbreak.exp gdb.base/consecutive.exp gdb.base/constvars.exp gdb.base/corefile.exp gdb.base/cursal.exp gdb.base/cvexpr.exp gdb.base/dbx.exp gdb.base/default.exp gdb.base/define.exp gdb.base/del.exp gdb.base/detach.exp gdb.base/dfp-exprs.exp gdb.base/dfp-test.exp gdb.base/display.exp gdb.base/dump.exp gdb.base/echo.exp gdb.base/ena-dis-br.exp gdb.base/ending-run.exp gdb.base/environ.exp gdb.base/eval-skip.exp gdb.base/exe-lock.exp gdb.base/expand-psymtabs.exp gdb.base/exprs.exp gdb.base/fileio.exp gdb.base/find.exp gdb.base/finish.exp gdb.base/fixsection.exp gdb.base/float.exp gdb.base/foll-exec.exp gdb.base/foll-fork.exp gdb.base/foll-vfork.exp gdb.base/frame-args.exp gdb.base/freebpcmd.exp gdb.base/fullname.exp gdb.base/funcargs.exp gdb.base/gcore-buffer-overflow.exp gdb.base/gcore.exp gdb.base/gdb1056.exp gdb.base/gdb1090.exp gdb.base/gdb1250.exp gdb.base/gdb1555.exp gdb.base/gdb1821.exp gdb.base/gdbvars.exp gdb.base/hashline1.exp gdb.base/hashline2.exp gdb.base/hashline3.exp gdb.base/help.exp gdb.base/hook-stop-continue.exp gdb.base/hook-stop-frame.exp gdb.base/huge.exp gdb.base/ifelse.exp gdb.base/included.exp gdb.base/infnan.exp gdb.base/info-proc.exp gdb.base/info-target.exp gdb.base/interp.exp gdb.base/interrupt.exp gdb.base/jump.exp gdb.base/langs.exp gdb.base/lineinc.exp gdb.base/list.exp gdb.base/logical.exp gdb.base/long_long.exp gdb.base/longjmp.exp gdb.base/macscp.exp gdb.base/maint.exp gdb.base/mips_pro.exp gdb.base/miscexprs.exp gdb.base/multi-forks.exp --outdir gdb.base1
Test Run By tschwinge on Mon Jul 20 12:26:55 2009
Native configuration is i386-unknown-gnu0.3
=== gdb tests ===
Schedule of variations:
unix
Running target unix
Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /usr/share/dejagnu/config/unix.exp as generic interface file for target.
Using ../../../HEAD/src/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file.
Running ../../../HEAD/src/gdb/testsuite/gdb.base/gcore.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/exe-lock.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/complex.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdbvars.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/condbreak.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/detach.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/breakpoint-shadow.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/bigcore.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/jump.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/multi-forks.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/frame-args.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/dbx.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/echo.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/all-bin.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/bitfields2.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1821.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/environ.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/infnan.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/advance.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/commands.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/callfuncs.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/define.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/foll-fork.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/auxv.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/interrupt.exp ...
FAIL: gdb.base/interrupt.exp: Send Control-C, second time
FAIL: gdb.base/interrupt.exp: send end of file
Running ../../../HEAD/src/gdb/testsuite/gdb.base/a2-run.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-signal-resume.exp ...
FAIL: gdb.base/call-signal-resume.exp: dummy stack frame number
XPASS: gdb.base/call-signal-resume.exp: frame
FAIL: gdb.base/call-signal-resume.exp: continue to breakpoint at stop_two
FAIL: gdb.base/call-signal-resume.exp: continue to receipt of signal (timeout)
FAIL: gdb.base/call-signal-resume.exp: break null_hand_call (timeout)
FAIL: gdb.base/call-signal-resume.exp: null_hand_call (timeout)
FAIL: gdb.base/call-signal-resume.exp: dummy stack frame number
FAIL: gdb.base/call-signal-resume.exp: set confirm off (timeout)
FAIL: gdb.base/call-signal-resume.exp: return (timeout)
FAIL: gdb.base/call-signal-resume.exp: break handle_signal (timeout)
FAIL: gdb.base/call-signal-resume.exp: continue to breakpoint at handle_signal (timeout)
FAIL: gdb.base/call-signal-resume.exp: continue to program exit (timeout)
Running ../../../HEAD/src/gdb/testsuite/gdb.base/hashline2.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/async.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/callexit.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/freebpcmd.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/corefile.exp ...
WARNING: can't generate a core file - core tests suppressed - check ulimit -c
Running ../../../HEAD/src/gdb/testsuite/gdb.base/hook-stop-frame.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/info-proc.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/arithmet.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-sc.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/info-target.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/expand-psymtabs.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/checkpoint.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/cond-expr.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/consecutive.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/help.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/finish.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/lineinc.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/annota1.exp ...
FAIL: gdb.base/annota1.exp: run until main breakpoint
FAIL: gdb.base/annota1.exp: send SIGUSR1 (timeout)
FAIL: gdb.base/annota1.exp: backtrace @ signal handler (timeout)
FAIL: gdb.base/annota1.exp: delete bp 1 (timeout)
FAIL: gdb.base/annota1.exp: delete bp 2 (timeout)
FAIL: gdb.base/annota1.exp: delete bp 3 (timeout)
FAIL: gdb.base/annota1.exp: break at 28 (timeout)
FAIL: gdb.base/annota1.exp: set up display (timeout)
FAIL: gdb.base/annota1.exp: re-run (timeout)
FAIL: gdb.base/annota1.exp: break at 46 (timeout)
FAIL: gdb.base/annota1.exp: ignore 5 4 (timeout)
FAIL: gdb.base/annota1.exp: annotate ignore count change (timeout)
FAIL: gdb.base/annota1.exp: next to exit loop
FAIL: gdb.base/annota1.exp: breakpoint ignore count (timeout)
FAIL: gdb.base/annota1.exp: signal sent (timeout)
FAIL: gdb.base/annota1.exp: thread switch (timeout)
Running ../../../HEAD/src/gdb/testsuite/gdb.base/logical.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/fixsection.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/annota3.exp ...
FAIL: gdb.base/annota3.exp: send SIGUSR1 (pattern 4) (timeout)
FAIL: gdb.base/annota3.exp: backtrace @ signal handler (pattern 1) (timeout)
FAIL: gdb.base/annota3.exp: delete bp 1 (pattern 1 + sentinel) (timeout)
FAIL: gdb.base/annota3.exp: delete bp 2 (pattern 1 + sentinel) (timeout)
FAIL: gdb.base/annota3.exp: delete bp 3 (pattern 1 + sentinel) (timeout)
FAIL: gdb.base/annota3.exp: break at 28 (pattern 1) (timeout)
FAIL: gdb.base/annota3.exp: set up display (pattern 1) (timeout)
FAIL: gdb.base/annota3.exp: re-run (timeout)
FAIL: gdb.base/annota3.exp: break at 46 (pattern 1) (timeout)
FAIL: gdb.base/annota3.exp: ignore 5 4 (pattern 1) (timeout)
FAIL: gdb.base/annota3.exp: annotate ignore count change (pattern 1) (timeout)
FAIL: gdb.base/annota3.exp: next to exit loop (pattern 1) (timeout)
FAIL: gdb.base/annota3.exp: breakpoint ignore count (pattern 1) (timeout)
FAIL: gdb.base/annota3.exp: signal sent (pattern 1) (timeout)
Running ../../../HEAD/src/gdb/testsuite/gdb.base/args.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/hook-stop-continue.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/display.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/ifelse.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1056.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/bitops.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/completion.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/list.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/long_long.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/bang.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/mips_pro.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/dfp-exprs.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/interp.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/exprs.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/ena-dis-br.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/langs.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/hashline1.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/assign.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-strs.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/default.exp ...
FAIL: gdb.base/default.exp: show convenience
Running ../../../HEAD/src/gdb/testsuite/gdb.base/dump.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/hashline3.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/foll-exec.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/ending-run.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/dfp-test.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/gcore-buffer-overflow.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/fileio.exp ...
FAIL: gdb.base/fileio.exp: Stat a NULL pathname returns ENOENT or EFAULT
FAIL: gdb.base/fileio.exp: Stat an empty pathname returns ENOENT
FAIL: gdb.base/fileio.exp: Stat a nonexistant file returns ENOENT (the program is no longer running)
FAIL: gdb.base/fileio.exp: Fstat an open file (the program is no longer running)
FAIL: gdb.base/fileio.exp: Fstat an invalid file descriptor returns EBADF (the program is no longer running)
FAIL: gdb.base/fileio.exp: Isatty (stdin) (the program is no longer running)
FAIL: gdb.base/fileio.exp: Isatty (stdout) (the program is no longer running)
FAIL: gdb.base/fileio.exp: Isatty (stderr) (the program is no longer running)
FAIL: gdb.base/fileio.exp: Isatty (invalid fd) (the program is no longer running)
FAIL: gdb.base/fileio.exp: Isatty (open file) (the program is no longer running)
FAIL: gdb.base/fileio.exp: System says shell is available (the program is no longer running)
FAIL: gdb.base/fileio.exp: System(3) call (the program is no longer running)
FAIL: gdb.base/fileio.exp: System with invalid command returns 127 (the program is no longer running)
FAIL: gdb.base/fileio.exp: Rename a file (the program is no longer running)
FAIL: gdb.base/fileio.exp: Renaming a file to existing directory returns EISDIR (the program is no longer running)
FAIL: gdb.base/fileio.exp: Renaming a directory to a non-empty directory returns ENOTEMPTY or EEXIST (the program is no longer running)
FAIL: gdb.base/fileio.exp: Renaming a directory to a subdir of itself returns EINVAL (the program is no longer running)
FAIL: gdb.base/fileio.exp: Renaming a nonexistant file returns ENOENT (the program is no longer running)
FAIL: gdb.base/fileio.exp: Unlink a file (the program is no longer running)
FAIL: gdb.base/fileio.exp: Unlinking a file in a directory w/o write access returns EACCES (the program is no longer running)
FAIL: gdb.base/fileio.exp: Unlinking a nonexistant file returns ENOENT (the program is no longer running)
FAIL: gdb.base/fileio.exp: Time(2) call returns the same value as in parameter (the program is no longer running)
FAIL: gdb.base/fileio.exp: Time(2) returns feasible values (the program is no longer running)
Running ../../../HEAD/src/gdb/testsuite/gdb.base/huge.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/find.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/eval-skip.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/arrayidx.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1555.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/attach.exp ...
FAIL: gdb.base/attach.exp: attach to nonsense is prohibited (bogus pid allowed)
FAIL: gdb.base/attach.exp: attach to nonexistent process is prohibited
FAIL: gdb.base/attach.exp: attach1, after setting file
FAIL: gdb.base/attach.exp: attach1 detach
FAIL: gdb.base/attach.exp: set file, before attach2
FAIL: gdb.base/attach.exp: after attach2, set tbreak postloop
FAIL: gdb.base/attach.exp: (timeout) after attach2, reach tbreak postloop
FAIL: gdb.base/attach.exp: after attach2, exit (timeout)
FAIL: gdb.base/attach.exp: set source path (the program is no longer running)
FAIL: gdb.base/attach.exp: cd away from process working directory
FAIL: gdb.base/attach.exp: before attach3, flush symbols
FAIL: gdb.base/attach.exp: before attach3, flush exec
FAIL: gdb.base/attach.exp: attach when process' a.out not in cwd
FAIL: gdb.base/attach.exp: after attach3, exit
FAIL: gdb.base/attach.exp: attach call
FAIL: gdb.base/attach.exp: c
Running ../../../HEAD/src/gdb/testsuite/gdb.base/break.exp ...
FAIL: gdb.base/break.exp: breakpoint at start of multi line while conditional
FAIL: gdb.base/break.exp: breakpoint info
Running ../../../HEAD/src/gdb/testsuite/gdb.base/del.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/miscexprs.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/float.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/longjmp.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/code-expr.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/included.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-ar-st.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/cvexpr.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/maint.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/funcargs.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/chng-syms.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/foll-vfork.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/charset.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/cursal.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/break-always.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/call-rt-st.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/constvars.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/fullname.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1250.exp ...
FAIL: gdb.base/gdb1250.exp: running to abort in runto
Running ../../../HEAD/src/gdb/testsuite/gdb.base/bfp-test.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/bitfields.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/macscp.exp ...
Running ../../../HEAD/src/gdb/testsuite/gdb.base/gdb1090.exp ...
=== gdb Summary ===
# of expected passes 3876
# of unexpected failures 86
# of unexpected successes 1
# of expected failures 6
# of known failures 19
# of untested testcases 1
# of unsupported tests 4
/media/data/home/tschwinge/tmp/gdb/HEAD.build/gdb/testsuite/../../gdb/gdb version 6.8.50.20090720-cvs -nw -nx
Given an a.out executable that only does raise (SIGABRT), invoking that
one...
... against
crash-dump-corewill...... not overwrite existing
corefiles.Is this reasonable? Linux does overwrite them, for example.
... show big variances in running-time behavior:
$ TIMEFORMAT='real %R user %U system %S' $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core Aborted (core dumped) real 1.350 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 21:59 core $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core Aborted (core dumped) real 22.771 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 21:59 core $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core Aborted (core dumped) real 1.367 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:00 core $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core Aborted (core dumped) real 5.789 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:00 core $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core Aborted (core dumped) real 22.664 user 0.010 system 0.000 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:01 core... produce a huge
corefile:$ du -hs core 17M coreOn Linux, the
corefile occupies 76 KiB of disk space, which seems much more reasonable.... produce an invalid
corefile:$ gdb a.out core warning: core file may not match specified executable file. [New Thread 76651] warning: Wrong size fpregset in core file. Reading symbols from /lib/libc.so.0.3...[...] Core was generated by `./a.out'. Program terminated with signal 6, Aborted. warning: Wrong size fpregset in core file. #0 0x00000000 in ?? () (gdb) bt #0 0x00000000 in ?? () Cannot access memory at address 0x17Probably the
crashserver code and GDB are out of sync.
... against
crash-suspendwill...... not work at all:
$ CRASHSERVER=/servers/crash-suspend ./a.out $ [returns to the shell and doesn't suspended]... show big variances in running-time behavior:
$ TIMEFORMAT='real %R user %U system %S' $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core Aborted (core dumped) real 1.381 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core Aborted (core dumped) real 1.332 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core Aborted (core dumped) real 21.228 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core Aborted (core dumped) real 1.323 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:05 core $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core Aborted (core dumped) real 22.279 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:05 core $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core Aborted (core dumped) real 1.362 user 0.000 system 0.000 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core Aborted (core dumped) real 21.110 user 0.000 system 0.000 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core Aborted (core dumped) real 1.350 user 0.000 system 0.020 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core... can reliably crash GNU Mach:
This happens if a
corefile is already present (and won't get overwritten; see above). I reproduced this three times.$ TIMEFORMAT='real %R user %U system %S' $ time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core Aborted real 2.856 user 0.000 system 0.010 -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core panic: zalloc: zone kalloc.8192 exhausted Kernel Breakpoint trap, eip 0x20020a77 Stopped at 0x20020a76: int $3 db> trace 0x20020a76(2006aba8,4d0f7e9c,200209b0,0,0) 0x20020a4d(2006b094,2006ae40,2000,20016803,4a5f4114) 0x2002bca5(49a03564,1,0,9,1000) 0x20022f4c(2000,4a5f45d4,4a84879c,49a46564,4ac43e78) 0x20021e65(4ac43e78,4a5f45d4,4a5f4114,0,0) 0x2005309d(2106ba9c,3,38,28,1783) Bad frame pointer: 0x2106ba78 $ addr2line -i -f -e /boot/gnumach-xen 0x20020a76 0x20020a4d 0x2002bca5 0x20022f4c 0x20021e65 0x2005309d Debugger /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:105 panic /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:148 zalloc /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/zalloc.c:470 kalloc /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/kalloc.c:185 ipc_kobject_server /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/ipc_kobject.c:76 mach_msg_trap /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/ipc/mach_msg.c:1367
GNU GDB's gnu-nat.c doesn't support non-stop mode.
Also, from http://lists.gnu.org/archive/html/bug-hurd/2008-10/msg00045.html, GNU GDB's Pedro Alves:
I also notice that when going through the shell in non-stop mode, it would be more correct to resume all threads --- we don't want non-stop and its scheduler-locking to apply to the shell. Basically, non-stop should be off if there are pending execs. This was an existing issue, and doesn't affect linux today, so I'll just ignore that for now, as it needs more tweaking to fix.
http://lists.gnu.org/archive/html/bug-hurd/2008-10/msg00045.html:
GNU GDB's Ulrich Weigand:
Hmm. It would appear that "set exec-wrapper" is currently broken with the gnu-nat.c target, right?
GNU GDB's Pedro Alves:
Yeah, it appears so. Don't know if it's possible to get rid of the local pending execs handling in gnu-nat.c. An alternative would be to make pending_execs a property of inferior.h:
struct inferior' instead of of gnu-nat.c:struct inf'.
GNU GDB's Pedro Alves:
One thing I asked myself was, if gnu-nat.c couldn't be using the port's id as thread ids instead of a locally auto-generated number. Maybe the thread id of the main thread would be preserved across execs this way
The GNU debugger GDB.
Open Issues
