FIX(client): Infinite loop and log spam on ALSA input device disconnection #6702
+21
−16
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A user reported that sometimes the client log gets spammed with repeated messages such as:
<W>2025-01-10 10:24:10.638 ALSAAudioInput: No such device: No such device
The error corresponds to
ENODEV
(19), which we treat like any other.Since it's unrecoverable, the code gets stuck in a full speed loop until the audio engine is stopped.
This commit:
snd_pcm_prepare()
tosnd_pcm_recover()
, which is specifically designed to recover streams.EINTR
,EPIPE
,ESTRPIPE
). Example log:<W>2025-01-14 06:16:44.494 ALSAAudioInput encountered unrecoverable error: File descriptor in bad state -> exiting...
Please note that also
ALSAAudioOutput
doesn't explicitly handle fatal errors in its loop, but it shouldn't run "infinitely" at full speed because poll-based.