Date: Sat, 24 Jan 2004 13:18:04 -0800 (PST) From: Don Lewis <truckman@FreeBSD.org> To: shoesoft@gmx.net Cc: mat@cnd.mcgill.ca Subject: Re: write(2) lc_r problem Message-ID: <200401242118.i0OLI47E073265@gw.catspoiler.org> In-Reply-To: <1074978522.690.12.camel@shoeserv.freebsd>
next in thread | previous in thread | raw e-mail | index | archive | help
On 24 Jan, Stefan Ehmann wrote: > On Sat, 2004-01-24 at 21:03, Mathew Kanner wrote: >> On Jan 24, Stefan Ehmann wrote: >> > On Sat, 2004-01-24 at 20:15, Mathew Kanner wrote: >> > > On Jan 24, Stefan Ehmann wrote: >> > > > I'm trying to write a small sound application and run across a problem >> > > > on CURRENT. >> > > > >> > > > It's very basic at the moment. It simply reads pcm data from a file and >> > > > uses write(2) on /dev/dsp. >> > > > >> > > > But as soon as I link the program with -lc_r there's always about 1 >> > > > second delay before a write call - which makes it pretty unusable for >> > > > playing sound. >> > > > >> > > > It should be easy reproducable if you link audio/waveplay with -lc_r. >> > > > >> > > > This doesn't happen in either FreeBSD 4.9, Knoppix or CURRENT if linked >> > > > with -lkse or -lthr. >> > > > >> > > > Am I'm missing something basic when using write together with lc_r or >> > > > ist this a bug in CURRENT? >> > > >> > > There is definetly a bug with the sound code when using vchans >> > > and select. Make sure that (using sysctl) >> > > >> > > hw.snd.maxautovchans=0 >> > > hw.snd.pcmX.vchans=0 >> > >> > You're right, that fixed it. That's also the reason why it worked on >> > stable (vchans was disabled there). >> >> Please try this untested patch with vchans enabled. >> > > Great, now it also works with vchans enabled. > > I'm also testing a pcm patch by truckman@ at the moment. Unfortunately > those two combined don't run nicely. > > Panicstring: mutex pcm0:virtual:0 not owned at /usr/src/sys/dev/sound/pcm/channel.c:90 Uncomment the CHN_LOCKASSERT(c) in chn_wakeup, and bracket the chn_wakeup() call in the SLIST_FOREACH() loop with CHN_LOCK(pce->channel); CHN_UNLOCK(pce->channel);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200401242118.i0OLI47E073265>