tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Potential re(4) / netbsd-4 / i386 problem?
On Fri, Jul 23, 2010 at 12:12:24PM +0200, Manuel Bouyer wrote:
> On Wed, Jul 21, 2010 at 02:06:11PM +0200, Brad du Plessis wrote:
> > I've managed to reproduce this now in netbsd-5 too (source is about
> > 3 months old, not sure if there have been any changes since):
> >
> > re0: discarding oversize frame (len=9041)
> > re0: discarding oversize frame (len=16158)
> > panic: kernel diagnostic assertion "pcg->pcg_avail == 0" failed:
> > file "../../../../kern_subr_pool.c", line 2580
> >
> >
> > As I think I've said before, the actual crash point is different
> > every time but the panic is always preceded by the discarding
> > oversize frame. Sometimes the len in the oversize frame message
> > is len=-1.
>
> is it possible that the re device is writting past its buffer (via DMA) and
> overwriting random memory ?
Check for buffer overruns by reserving a "guard region" on each side of
a DMA buffer. Write guard bytes (0xdeadbeefdeadbeef or something) in
each guard region. Check whether any bytes in the guard region were
modified before you reclaim a DMA buffer.
If that doesn't detect any problems, consider reclaiming DMA buffers
lazily: don't reclaim a buffer immediately, put put it on a queue. When
the queue grows N buffers deep, reclaim the first buffer you put on
it. Maybe an errant DMA lands on the buffer it while it "rests" on the
queue? Check a buffer's guard regions before you reclaim it. Consider
comparing the whole buffer against a copy you make when you put it on
the queue.
Dave
--
David Young OJC Technologies
dyoung%ojctech.com@localhost Urbana, IL * (217) 278-3933
Home |
Main Index |
Thread Index |
Old Index