Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Aug 1999 22:59:22 -0700 (PDT)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Bernd Walter <ticso@cicely.de>
Cc:        Mike Smith <mike@smith.net.au>, Bernd Walter <ticso@cicely.de>, Parag Patel <parag@cgt.com>, freebsd-current@FreeBSD.ORG, grog@lemis.com
Subject:   Re: 4.0-CURRENT SMP crash with vinum raid-5 and softupdates
Message-ID:  <199908300559.WAA09987@apollo.backplane.com>
References:  <199908292224.PAA15435@dingo.cdrom.com> <199908292348.QAA07774@apollo.backplane.com> <19990830075311.A30271@cicely8.cicely.de>

next in thread | previous in thread | raw e-mail | index | archive | help

:(kgdb) target remote /dev/cuaa2
:Remote debugging using /dev/cuaa2
:0x0 in ?? ()
:(kgdb) bt
:#0  0x0 in ?? ()
:#1  0xc017228f in biodone (bp=0xc09ebd80) at ../../kern/vfs_bio.c:2580
:#2  0xc0123db6 in dadone (periph=0xc0882c80, done_ccb=0xc09bd200) at ../../cam/scsi/scsi_da.c:1294
:#3  0xc011fa7b in camisr (queue=0xc02726b4) at ../../cam/cam_xpt.c:6141
:#4  0xc011f88d in swi_cambio () at ../../cam/cam_xpt.c:6048
:#5  0xc020db30 in splz_swi ()
:(kgdb) frame 1
:#1  0xc017228f in biodone (bp=0xc09ebd80) at ../../kern/vfs_bio.c:2580
:2580	../../kern/vfs_bio.c: No such file or directory.
:(kgdb) print bp
:$1 = (struct buf *) 0xc09ebd80
:(kgdb) print *bp
:$2 = {
:  b_hash = {
:    le_next = 0x0, 
:    le_prev = 0x0
:  }, 
:  b_vnbufs = {
:...
:(kgdb) 
:-- 
:B.Walter                  COSMO-Project              http://www.cosmo-project.de

    This is definitely a pbuf.  Did you apply the patches Greg emailed?
    They will panic the machine earlier while it is still in the correct
    stack frame, allowing Greg to track down where the I/O initiation came
    from.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>

(patch and comments from Greg):

Index: kern/vfs_bio.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/vfs_bio.c,v
retrieving revision 1.227
diff -w -u -r1.227 vfs_bio.c
--- vfs_bio.c   1999/08/28 00:46:23     1.227
+++ vfs_bio.c   1999/08/30 01:31:00
@@ -2576,6 +2576,8 @@
 
        /* call optional completion function if requested */
        if (bp->b_flags & B_CALL) {
+               if (bp->b_iodone == NULL)
+                       Debugger ("biodone");
                bp->b_flags &= ~B_CALL;
                (*bp->b_iodone) (bp);
                splx(s);
Index: dev/vinum/vinumrequest.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/vinum/vinumrequest.c,v
retrieving revision 1.35
diff -w -u -r1.35 vinumrequest.c
--- vinumrequest.c      1999/08/28 00:42:42     1.35
+++ vinumrequest.c      1999/08/30 01:26:58
@@ -396,6 +390,9 @@
                if (debug & DEBUG_LASTREQS)
                    logrq(loginfo_rqe, (union rqinfou) rqe, rq->bp);
 #endif
+               if ((rqe->b.b_flags & B_CALL)
+                   && (rqe->b.b_iodone == NULL) )
+                 Debugger ("launch_requests");
                /* fire off the request */
                BUF_STRATEGY(&rqe->b, 0);
            }

You could also enable some of Vinum's internal logging:

  # vinum debug 324

This will log all requests in an internal buffer.  With the .gdbinit
files in /sys/modules/vinum, you can display them with the gdb command
'rrqi'.  Alternatively, if I can connect to the debug console, I'll
look for myself.



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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