Re: infinite loop in src/pcm/pcm_params.c function snd_pcm_sw_params_default()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 25. 02. 23 17:44, bumpelo@xxxxxxxxx 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/a8afb0449c6a898180982369f543b50393bb90b6 . But as I noted, it's not a fix for the broken code.

					Jaroslav

--
Jaroslav Kysela <perex@xxxxxxxx>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux