[alsa-devel] snd_pcm_drain and lockups
tiwai at suse.de
Thu Sep 6 15:54:54 CEST 2007
At Wed, 5 Sep 2007 19:19:10 +0200,
Arve Knudsen wrote:
> Hi Takashi
> On 9/5/07, Takashi Iwai <tiwai at suse.de> wrote:
> > At Tue, 4 Sep 2007 23:03:27 +0200,
> > Arve Knudsen wrote:
> > >
> > > Hello
> > >
> > > Users of the PortAudio library on top of ALSA-lib have reported that it
> > may
> > > hang in a call to snd_pcm_drain. I have also been able to confirm that
> > this
> > > can happen in conjunction with the dmix device at least. Can the ALSA
> > > developers please tell me how, if at all, snd_pcm_drain may be safely
> > used?
> > > Is this function simply best avoided (snd_pcm_drop being the
> > alternative)?
> > Of course, it's supposed to be safe to use :) But, it's hard to tell
> > you more unless I get the details in your case...
> > In which situation is it called? Are they multi-threaded?
> The lock-up happens in a background thread within PortAudio. What has been
> known to cause lock-ups at least is that PA restarts the device after the
> detection of an xrun. This procedure entails first draining the stream
> (snd_pcm_drain), the dmix and front devices have been known to lock up here
> (I've experienced it with dmix at least). I've googled a bit on the problem,
> and I didn't find a whole lot of evidence of this problem, but I did find
> this: http://www.ohloh.net/projects/5344/contributors/32264/commits/10293341
It's still hard to imagine what's going on there without a small test
case. I vaguely remember a similar problem, but I thought it should
have been fixed in the recent versions.
More information about the Alsa-devel