[alsa-devel] alsa-lib: commit ce2095c41f2891c51f5dbd28e0317200314c5a75 breaks speaker-test/pulseaudio

Diego Viola diego.viola at gmail.com
Wed Dec 19 03:29:38 CET 2018


Hello Takashi,

I currently have an issue with speaker-test and pulseaudio, and the
root of the problem seems to be a regression in alsa-lib.

The issue occurs when I run speaker-test, it creates endless output
with no sound, and the output does not stop until I hit ctrl-c.

I've been investigating about this issue and concluded (through a git
bisect) that this is a regression in alsa-lib, and this is the bad
commit that introduces the bug:

commit ce2095c41f2891c51f5dbd28e0317200314c5a75
Author: Takashi Iwai <tiwai at suse.de>
Date:   Thu Mar 29 09:51:46 2018 +0200

    pcm: ioplug: Implement proper drain behavior

    This patch fixes the draining behavior of ioplug in the following
    ways:

    - When no draining ioplug callback is defined, implement the draining
      loop using snd_pcm_wait*() and sync with the drain finishes.
      This is equivalent with the implementation in the kernel write().
      Similarly as in kernel code, for non-blocking mode, it returns
      immediately after setting DRAINING state.

    - The hw_ptr update function checks the PCM state and stops the stream
      if the draining finishes.

    - When draining ioplug callback is defined, leave the whole draining
      operation to it.  The callback is supposed to return -EAGAIN for
      non-blocking case, too.

    - When an error happens during draining, it drops the stream, for a
      safety reason.

    Signed-off-by: Takashi Iwai <tiwai at suse.de>

I've sanity checked and can confirm that going back to the previous
commit fixes the issue.

My original bug report on the pulseaudio bug tracker:
https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/593

Thanks, and please let me know if you need more information.

Regards,
Diego


More information about the Alsa-devel mailing list