[alsa-devel] "alsactl store" fails to save Echo Gina3G mixer

Takashi Sakamoto o-takashi at sakamocchi.jp
Thu Aug 31 05:50:10 CEST 2017


On Aug 29 2017 12:46, S. Christian Collins wrote:
> On 08/28/2017 10:33 PM, Takashi Sakamoto wrote:
>>
>> Would you get output from below command line for your Gina 3G?
>>
>> $ amixer scontrols
> 
> The output of "amixer -c 1 scontrols" is attached to this e-mail as 
> "scontrols.txt".
> 
>> And typically state data is stored into '/var/lib/alsa/asound.state' 
>> as a default. For my information, could you disclose it if possible?
> 
> Yes, it is also attached to this e-mail. The asound.state file was last 
> modified on March 26th. I remember that I used to not get the error when 
> using "alsactl store", so perhaps an update caused this issue to appear 
> around that time?

$ 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


More information about the Alsa-devel mailing list