Date: Sun, 03 Aug 2003 00:31:45 -0400 (EDT) From: John Baldwin <jhb@FreeBSD.org> To: "Greg 'groggy' Lehey" <grog@FreeBSD.org> Cc: current@freebsd.org Subject: Re: Yet another crash in FreeBSD 5.1 Message-ID: <XFMail.20030803003145.jhb@FreeBSD.org> In-Reply-To: <20030803000727.GG95375@wantadilla.lemis.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 03-Aug-2003 Greg 'groggy' Lehey wrote: > On Saturday, 2 August 2003 at 16:47:13 +0200, Eivind Olsen wrote: >> --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) > > This is almost certainly the wrong function. At the very list you > should look at the arguments passed to it. Actually, this line can be very instructive. Since 'bp' is valid it is probably the bp2 from g_clone_bio() that is NULL. You might want to ask phk about that one. >> (kgdb) list *(launch_requests+448) >> No symbol "launch_requests" in current context. >> (kgdb) list *(vinumstart+2b2) >> No symbol "vinumstart" in current context. >> (kgdb) > > Read the links I just sent you. You haven't loaded the Vinum symbols. Bah, this isn't hard for you to do either: (gdb) l *(launch_requests+0x448) 0xad58 is in launch_requests (/usr/src/sys/dev/vinum/vinumrequest.c:448). 443 microtime(&rqe->launchtime); /* time we launched this request */ 444 logrq(loginfo_rqe, (union rqinfou) rqe, rq->bp); 445 } 446 #endif 447 /* fire off the request */ 448 DEV_STRATEGY(&rqe->b); 449 } 450 } 451 } 452 return 0; But you knew that. Also, Eivind, you need to use hex, not decimal offsets from the functions. You might want to redo the g_dev_strategy() line with 0x29 instead of 29. -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20030803003145.jhb>