On 25. 02. 23 17:44, bumpelo@gmail.com wrote:
I found this infinite loop while playing with the test/latency.c function. When I specify too small of a minimum latency (in my case -m 256 or smaller) it winds up:
at line line 2337: params->boundary = pcm->buffer_size; while (params->boundary * 2 <= LONG_MAX - pcm->buffer_size) params->boundary *= 2; return 0;
but when pcm->buffer_size is zero this is an infinite loop. It does this *after* setting the scheduling to round-robin which makes the infinite loop so much more painful.
The buffer_size should not be zero after pcm->ops->hw_params() call - an error should be returned there, so something bad is in the driver or used plugin in the chain.
Which driver do you test? Or do you have a special alsa-lib configuration?
The loop fix in alsa-lib: https://github.com/alsa-project/alsa-lib/commit/a8afb0449c6a898180982369f543... . But as I noted, it's not a fix for the broken code.
Jaroslav