[alsa-devel] Possible ALSA loopback bug?
Takashi Iwai
tiwai at suse.de
Tue Jan 22 18:21:23 CET 2019
On Tue, 22 Jan 2019 18:16:52 +0100,
Timothy Pearson wrote:
>
> On 01/22/2019 11:13 AM, Takashi Iwai wrote:
> > On Mon, 21 Jan 2019 22:38:19 +0100,
> > Timothy Pearson wrote:
> >>
> >> On 01/20/2019 07:00 PM, Timothy Pearson wrote:
> >>> I've been running a dedicated machine with ALSA loopback, feeding
> >>> darkice on the capture side and (currently) using mplayer to provide
> >>> audio on the playback side. I've seen sporadic hangs for a couple of
> >>> years on this setup, but recently with the switch to mplayer I have
> >>> additional information that points more to ALSA than the other applications.
> >>>
> >>> When the audio hangs, mplayer prints a continuous stream of:
> >>> "Audio device got stuck!"
> >>>
> >>> The only way to "unstick" the audio stream is to terminate and restart
> >>> mplayer. Restarting darkice does not fix the stuck stream. There is no
> >>> pulseaudio on this sytem.
> >>>
> >>> What would be the next steps to debug this setup? It's shown up on two
> >>> entirely different installs at this point (Ubuntu 14.04 and Debian 9).
> >>>
> >>> Thanks!
> >>
> >> A bit of additional information: before audio output ceases entirely,
> >> the messages start printing and the audio becomes very choppy. The
> >> system has no processes stuck at 100% CPU or any other visible signs of
> >> duress during this time.
> >>
> >> Suggestions on debug are welcome!
> >
> > The whole story above indicates merely a message like infamous TeX
> > error, "something is wrong" :) We need more detailed information.
>
> That's what I had guessed, but I am not familiar enough with the ALSA
> stack to know what would be useful for debugging or how to get it. The
> loopback module is in kernel, which makes debug even more fun.
>
> I recently determined that the capture end of the loopback device
> (darkice) reports "Buffer overrun". Given that, my next question
> becomes what happens if capture stops / stalls on an ALSA loopback
> device? Is this expected to be recoverable without restarting both ends
> of the loopback (playback and capture) or am I asking ALSA to do
> something it isn't designed to do?
If it's about buffer overrun (or underrun for playback), more often
it's an application-side problem that doesn't recover the stream
properly.
> > For example, how is the PCM status of each running PCM stream when
> > this happens? Also, track where the application gets stuck, what was
> > expected but what didn't happen. You can see it via gdb or whatever.
>
> How would I get the PCM status?
You can check it in /proc/asound/card*/pcm*/....
If the stream gets stuck as XRUN state, it implies that the
application didn't treat it right.
HTH,
Takashi
More information about the Alsa-devel
mailing list