NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/38636: ld(4) is now totally broken with ataraid(4)
The following reply was made to PR kern/38636; it has been noted by GNATS.
From: Juergen Hannken-Illjes <hannken%eis.cs.tu-bs.de@localhost>
To: NetBSD GNATS <gnats-bugs%netbsd.org@localhost>,
NetBSD Kernel Technical Discussion List <tech-kern%netbsd.org@localhost>
Cc:
Subject: Re: kern/38636: ld(4) is now totally broken with ataraid(4)
Date: Sat, 23 Aug 2008 19:20:29 +0200
On Sat, Aug 23, 2008 at 12:56:31PM -0400, Greg A. Woods wrote:
> OK, so it's now near the end of August and a whole lot more has been
> done to -current since this PR was first filed, but yet I'm still seeing
> exactly the same LOCKDEBUG panic. I've CC'ed this message to tech-kern
> and port-i386 to see if anyone can shed new eyes on this.
>
> To me, at least, fixing this is really critical for NetBSD-5.
>
> Any help would be appreciated.
>
>
> NetBSD 4.99.72 (GENERIC) #0: Wed Aug 20 15:08:33 EDT 2008
> [[....]]
> ataraid0: found 1 RAID volume
> ld0 at ataraid0 vendtype 1 unit 0: Adaptec ATA RAID-1 array
> ld0: ld_ataraid_attach(): ld unit 0 (ld->sc_dv = 0xd185d6cc)
> ld0: ldattach(): unit 0
> ld0: 186 GB, 24321 cyl, 255 head, 63 sec, 512 bytes/sect x 390721536 sectors
> rnd: ld0 attached as an entropy source (collecting)
> Condition variable error: pool_do_put: allocation contains active lock
>
> lock address : 0x00000000c31f7edc type : spin
> initialized : 0x00000000c05197f5 interlock: 000000000000000000
>
> panic: LOCKDEBUG
> Begin traceback...
> copyright(d0d44442,0,d1843580,c0b274dc,d1843580,d1843518,c31f7edc,c0b25fa4,0,0)
> at 0xc0a9f0a8
> Bad frame pointer: 0xd0d44400
> End traceback...
> fatal breakpoint trap in supervisor mode
> trap type 1 code 0 eip c05ac52c cs 8 eflags 246 cr2 0 ilevel 6
> Stopped in pid 0.4 (system) at netbsd:breakpoint+0x4: popl %ebp
> db{0}> trace
> breakpoint(c0a9fed6,1,ffff,c0afc059,c04e3250,1,0,0,d086fc0c,8) at
> netbsd:breakpoint+0x4
> panic(c0a9edbc,c0a983ef,c087b03c,c0a9f0a8,c087b03c,1843540,6,c31f7e8c,c31f7e8c,c0bca2a0)
> at netbsd:panic+0x1b8
> lockdebug_abort1(c0a9f0a8,1,c4,c04dc3da,8,d1823b80,c0bca314,c083ca86,c0be6640,c0be3800)
> at netbsd:lockdebug_abort1+0xbb
> pool_put(c0bca2a0,c31f7e8c,3,d1823b80,0,0,d1823b80,c04b0aaa,c31e7a14,d185d6cc)
> at netbsd:pool_put+0x60
> ld_ataraid_iodone_raid0(c31f7e8c,0,0,0,c31f7e8c,c0b29800,d086fd40,c051beca,3,c04c1c60)
> at netbsd:ld_ataraid_iodone_raid0+0x1c3
Ok, here we pool_put() a cbuf without destroying its cb_buf. Could you try
this one:
--- sys/dev/ata/ld_ataraid.c 2008-05-08 02:04:47.000000000 +0200
+++ sys/dev/ata/ld_ataraid.c
@@ -516,4 +516,5 @@ ld_ataraid_iodone_raid0(struct buf *vbp)
}
count = cbp->cb_buf.b_bcount;
+ buf_destroy(&cbp->cb_buf);
CBUF_PUT(cbp);
--
Juergen Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig
(Germany)
Home |
Main Index |
Thread Index |
Old Index