Re: page fault panic tracked down (selwakeuppri())

From: Don Lewis <truckman_at_FreeBSD.org>
Date: Fri, 2 Jan 2004 20:01:24 -0800 (PST)
On  2 Jan, Stefan Ehmann wrote:
> On Sun, 2003-12-28 at 14:41, Stefan Ehmann wrote:
>> Some weeks ago I posted about a panic in 5.2-BETA.
>> 
>> After accessing a read-only ext2fs for some hours I got a "page fault"
>> panic (or rarely a "getblk: size(7537385) > MAXBSIZE(65536)"). The
>> backtrace was always somewhat different.
> 
> Since nobody has been able to reproduce this panic yet I did some more
> testing today.
> 
> I wanted to find out if reading from the ext2fs was the sole cause for
> the panic.
> 
> To cause the same kind of load I played music files from the ext2
> partition in random mode on a different pc over network. No panic (~6
> hrs up) yet.
> 
> Maybe there's a race if writing to dsp and reading from the ext2fs. 
> 
> dsp as sole cause is also unlikely because I've been listening for
> longer times from cdrom/ufs2 without panics.

I wouldn't rule out the dsp, since you audio player software may be
calling select() on the fd for the audio device.  You might want to back
out Bruce's quick hack and change the second argument to selwakeuppri()
to -1 in chn_wakeup() in dev/sound/pcm/channel.c.

Is your kernel compiled with the INVARIANTS and INVARIANTS_SUPPORT
options?

Something else that I noticed is that the CHN_LOCKASSERT macro has an
empty definition in dev/sound/pcm/channel.h.  You might want to try
defining it as
	mtx_assert((struct mtx *)((c)->lock), MA_OWNED)

I still don't see any obvious cause for this problem.
Received on Fri Jan 02 2004 - 19:01:33 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:36 UTC