On 9/6/07, Takashi Iwai tiwai@suse.de wrote:
At Wed, 5 Sep 2007 19:19:10 +0200, Arve Knudsen wrote:
Hi Takashi
On 9/5/07, Takashi Iwai tiwai@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.
I can try to procure a test case, but I believe it happens rather randomly.
Arve