I have attached the output of the alsa-ctl-dimen-check program.
-~Chris
On 08/30/2017 10:50 PM, Takashi Sakamoto wrote:
$ alsactl -f ~/asound1.state store 1 (alsa-utils:alsactl/alsactl.c) main() (alsa-utils:alsactl/state.c) ->save_state() ->get_controls() ->get_control() snd_ctl_elem_info(info) count = snd_ctl_elem_info_get_count(info) for (i = 0; i < count; i++) snd_ctl_elem_value_get_integer(ctl, i)
I guess that 'snd-echo3g.ko' returns value greater than 128 in a call graph of 'snd_ctl_elem_info_get_count()', then a call of 'snd_ctl_elem_value_get_integer()' hits an assertion in the function.
A patch mentioned by Mark Hills (a commit 275353bb684e 'ALSA: echoaudio: purge contradictions between dimension matrix members and total number of members') is fairly valid in a logical design of ALSA control protocol/interface. In detail, please refer to my post[1].
Some of ALSA drivers for PCI cards produced by Echo Audio potentially have problems which I mentioned in the post. They can cause buffer-over-run over 'struct snd_ctl_elem_value.value' in user space. The drivers should be going to fix.
I wrote a small program to validate dimension information for your card[2]. Would you please execute it? Like:
$ gcc -o ./test ./alsa-ctl-dimen-check.c $ ./test /dev/snd/controlC[0-9]
An argument is required for a path of special file for ALSA control character device for your sound card.
[1] [alsa-devel] [PATCH 0/3] ALSA: add dimension information validator http://mailman.alsa-project.org/pipermail/alsa-devel/2016-June/109811.html [2] alsa-ctl-dimen-check.c https://gist.github.com/takaswie/cd670ee88b7fd25c68780610ad8ad54f
Regards
Takashi Sakamoto