Public bug reported:

Affected package: libasound2-plugins 1.2.12-2build1 (source: alsa-plugins)
Environment: Ubuntu 26.04.1 LTS, amd64, WSL2/WSLg, Codex CLI 0.164.0

Impact
Codex voice sessions start and immediately stop with:
"voice audio session stopped unexpectedly".
The helper reports phase=Device and exit code 37.

Cause
pa_stream_get_latency() returns -PA_ERR_NODATA (-16) while timing data is
not yet available. pulse_delay() compares against positive PA_ERR_NODATA
and converts this temporary condition into -EIO.

Upstream fix
https://github.com/alsa-project/alsa-plugins/commit/811c2ce69d1265ace42a05ef045ca1b4ed72e01c
Applied upstream on 2026-10-15; please backport it to resolute.

Minimal change
- if (err != PA_ERR_NODATA) {
+ if (err != -PA_ERR_NODATA) {

Reproducer
The small standalone ALSA reproducer is in upstream issue #65:
https://github.com/alsa-project/alsa-plugins/issues/65
Open a PulseAudio playback PCM, configure float32/stereo/48 kHz, and call
snd_pcm_avail_delay() immediately, before the first playback write.
Expected: wait for timing data and return success.
Actual with the original Ubuntu plugin: -EIO (-5).

Local verification on 2026-10-27
- Captured pa_stream_get_latency() returning -16 in an isolated test.
- Kernel uprobes on the actual bundled Codex helper captured repeated -5
  returns from snd_pcm_avail_delay() during a failing voice attempt.
- Built the v1.2.12 PulseAudio PCM plugin with only the upstream sign fix.
- Five consecutive immediate-start latency queries passed with the fixed plugin.
- Simultaneous capture/playback with repeated latency queries passed for five 
seconds.
- A real Codex voice conversation worked after selecting the fixed plugin.

Workaround and package state
The original Ubuntu system plugin remains unchanged. A locally built fixed
plugin is currently selected through a user pcm_type.pulse override in 
~/.asoundrc.
The failure was reproduced before enabling that workaround.

Regression considerations
The fix changes only handling of the documented temporary NODATA return.
Other error returns keep the existing -EIO path. Capture, playback, startup,
and genuinely unavailable-device cases should be checked when validating a 
package.

Related application report
https://github.com/openai/codex/issues/47370

** Affects: alsa-plugins (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2172315

Title:
  Backport pulse_delay() PA_ERR_NODATA sign fix to Ubuntu 26.04

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/alsa-plugins/+bug/2172315/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to