On Sunday, 29 August 1999 at 22:59:22 -0700, Matthew Dillon wrote:
>
>> (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)
>
> This is definitely a pbuf.
What's 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.
Well, in fact they didn't do that. The only one that I hit was in
biodone, which is effectively the same thing as the panic. But they
did show that it wasn't like that when it left vinum.
> 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
Note that this should read 328. 324 will always land you in the
Debugger (a feature, not a bug :-).
Greg
--
See complete headers for address, home page and phone numbers
finger [EMAIL PROTECTED] for PGP public key
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message