From: GitHub issues - edited <github@alsa-project.org>
To: alsa-devel@alsa-project.org
Subject: ALSA Pulse plugin returns -EIO from snd_pcm_avail_delay() in case of -PA_ERR_NODATA
Date: Mon, 21 Sep 2026 02:20:55 +0200 (CEST) [thread overview]
Message-ID: <18d72e16c75cd900-webhooks-bot@alsa-project.org> (raw)
In-Reply-To: <18d72e16c7535000-webhooks-bot@alsa-project.org>
alsa-project/alsa-plugins issue #65 was edited from argothiel:
### Environment
- Ubuntu 26.04 under WSL2 / WSLg
- `libasound2-plugins` 1.2.12-2build1
- PulseAudio server available through WSLg
### Problem
Immediately after configuring a playback PCM opened through the ALSA `pulse` plugin, `snd_pcm_avail_delay()` returns `-EIO`. This seems to be an issue with `pulse_delay()` which calls `pa_stream_get_latency()`. PulseAudio documents that this function returns `-PA_ERR_NODATA` when timing information is not available yet. The ALSA Pulse plugin compares the result against positive `PA_ERR_NODATA`; it therefore treats that temporary condition as an unrelated failure and returns `-EIO`:
- ALSA Pulse plugin comparison:
https://github.com/alsa-project/alsa-plugins/blob/ffc8b900792b77764213bac6816ba60f2c8d8025/pulse/pcm_pulse.c#L397-L404
- PulseAudio `pa_stream_get_latency()` documentation:
https://github.com/pulseaudio/pulseaudio/blob/77d25a1e613095bdf87a1d13b65e7c330565077a/src/pulse/stream.h#L725-L726
- The same issue has been fixed in the `shairport-sync` version:
https://github.com/mikebrady/shairport-sync/pull/2119
### Reproducer
```c
#include <alsa/asoundlib.h>
#include <assert.h>
#include <stdio.h>
int main(void)
{
snd_pcm_t *pcm;
snd_pcm_sframes_t avail, delay;
int err;
err = snd_pcm_open(&pcm, "pulse", SND_PCM_STREAM_PLAYBACK, 0);
assert(err == 0);
err = snd_pcm_set_params(
pcm,
SND_PCM_FORMAT_FLOAT_LE,
SND_PCM_ACCESS_RW_INTERLEAVED,
2,
48000,
1,
20000);
assert(err == 0);
err = snd_pcm_avail_delay(pcm, &avail, &delay);
printf("snd_pcm_avail_delay: %s (%d)\n", snd_strerror(err), err);
snd_pcm_close(pcm);
return err < 0;
}
```
Build and run:
```sh
cc main.c -lasound && ./a.out
```
### Actual result
```sh
snd_pcm_avail_delay: Input/output error (-5)
```
### Expected result
`snd_pcm_avail_delay()` should wait until PulseAudio timing information is available, then return the available-frame and delay values.
Issue URL : https://github.com/alsa-project/alsa-plugins/issues/65
Repository URL: https://github.com/alsa-project/alsa-plugins
next parent reply other threads:[~2026-09-21 0:21 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <18d72e16c7535000-webhooks-bot@alsa-project.org>
2026-09-21 0:20 ` GitHub issues - edited [this message]
[not found] <18d72dce2a4a3b00-webhooks-bot@alsa-project.org>
2026-09-21 0:15 ` ALSA Pulse plugin returns -EIO from snd_pcm_avail_delay() in case of -PA_ERR_NODATA GitHub issues - edited
[not found] <18d72d6ada085a00-webhooks-bot@alsa-project.org>
2026-09-21 0:08 ` GitHub issues - opened
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18d72e16c75cd900-webhooks-bot@alsa-project.org \
--to=github@alsa-project.org \
--cc=alsa-devel@alsa-project.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox