:(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
<[EMAIL PROTECTED]>
(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 [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message