Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 02 Aug 2003 16:47:13 +0200
From:      Eivind Olsen <eivind@aminor.no>
To:        current@freebsd.org
Subject:   Re: Yet another crash in FreeBSD 5.1
Message-ID:  <1886375.1059842833@[192.168.0.2]>
In-Reply-To: <3F2B803C.21D38E0B@mindspring.com>
References:  <1079.192.168.0.3.1059811884.squirrel@webmail.aminor.no> <3F2B803C.21D38E0B@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--On 2. august 2003 02:11 -0700 Terry Lambert <tlambert2@mindspring.com> 
wrote:
>> db> trace
>> g_dev_strategy(c2156024,c2153800,0,cfb528d0,c2099eca) at
>> g_dev_strategy+0x29 launch_requests(c299bf00,0,10000,ffffffff,47) at
>> launch_requests+0x448 vinumstart(c5ada2d0,0,c22ab000,cfb5294c,c02e5bc6)
>> at vinumstart+0x2b2
> gdb -k kernel.debug
> (gdb) list *(g_dev_strategy+29)
> [ ... ]
> (gdb) list *(launch_requests+448)
> [ ... ]
> (gdb) list *(vinumstart+2b2)
> [ ... ]
> Will give you the exact source lines involved, assuming you
> built a debug kernel.

I did. At least I've tried to. :)
(I have a kernel.debug which was compiled at the same time as the real 
kernel I'm using, and it's approx. 30MB in size).

> You don't actually need a crash dump to debug a stack traceback.

This is what I found by using those commands you mentioned:

eivind@vimes:~/tmp/debug > gdb -k kernel.debug
GNU gdb 5.2.1 (FreeBSD)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or 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.
This GDB was configured as "i386-undermydesk-freebsd"...
(kgdb) list *(g_dev_strategy+29)
0xc02e812d is in g_dev_strategy (/usr/src/sys/geom/geom_dev.c:415).
410             KASSERT(cp->acr || cp->acw,
411                 ("Consumer with zero access count in g_dev_strategy"));
412
413             bp2 = g_clone_bio(bp);
414             KASSERT(bp2 != NULL, ("XXX: ENOMEM in a bad place"));
415             bp2->bio_offset = (off_t)bp->bio_blkno << DEV_BSHIFT;
416             KASSERT(bp2->bio_offset >= 0,
417                 ("Negative bio_offset (%jd) on bio %p",
418                 (intmax_t)bp2->bio_offset, bp));
419             bp2->bio_length = (off_t)bp->bio_bcount;
(kgdb) list *(launch_requests+448)
No symbol "launch_requests" in current context.
(kgdb) list *(vinumstart+2b2)
No symbol "vinumstart" in current context.
(kgdb)

If anyone wants to take a look at this themselves I've put the compressed 
(gzip) debug-kernel available on 
http://eivind.aminor.no/debug/kernel.debug.gz
NOTE! It's approx. 13MB compressed!

-- 
Regards / Hilsen
Eivind Olsen
<eivind@aminor.no>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1886375.1059842833>