[pulseaudio-tickets] [Bug 96361] New: [NEED]Try recover from snd_pcm_avail() -EPIPE

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sat Jun 4 02:49:30 UTC 2016


https://bugs.freedesktop.org/show_bug.cgi?id=96361

            Bug ID: 96361
           Summary: [NEED]Try recover from snd_pcm_avail() -EPIPE
           Product: PulseAudio
           Version: unspecified
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: alsa
          Assignee: pulseaudio-bugs at lists.freedesktop.org
          Reporter: cunshangzhishu at gmail.com
        QA Contact: pulseaudio-bugs at lists.freedesktop.org
                CC: lennart at poettering.net

ALSA sink has been unloaded due to process_rewind() return -1.

"alsa-sink.c: process_rewind(1754) > [alsa-sink-Multimedia1 (*)]
snd_pcm_avail() failed: Broken pipe"
"sink.c: sink_free(843) > [pulseaudio] Freeing sink 2
"alsa_output.0.analog-stereo""
"module.c pa_module_free(183) > [pulseaudio] unloaded "module-alsa-sink"
(index: #15)"

Actually, sometimes we may meet snd_pcm_avail() -EPIPE from process_rewind,
pa_alsa_safe_avail. But how about do recover for this error case instead of
return error and unload sink?

I've tried make a patch for this issue. But I'm not sure about this is a proper
solution. Please give me your opinion. Thank you.

if (PA_UNLIKELY((unused = pa_alsa_safe_avail(u->pcm_handle, u->hwbuf_size,
&u->sink->sample_spec)) < 0)) {
    pa_log("snd_pcm_avail() failed: %s", pa_alsa_strerror((int) unused));
#ifdef RECOVER_FROM_EPIPE
    /* try recover if we got -EPIPE from snd_pcm_avail */
    if (unsed == -EPIPE) {
        pa_log("snd_pcm_avail() failed of -EPIPE. Try recover!!!");
        if (try_recover(u, "process_rewind", unused) < 0)
            return -1;
        else {
            pa_log_info("Tried rewind, but was apparently not possible.");
            pa_sink_process_rewind(u->sink, 0);
            return 0;
        }
    }
#endif
    return -1;
}

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-bugs/attachments/20160604/389381e9/attachment.html>


More information about the pulseaudio-bugs mailing list