2011/10/5 Takashi Iwai tiwai@suse.de:
At Wed, 5 Oct 2011 15:25:44 +0800, Raymond Yau wrote:
2011/10/3 Takashi Iwai tiwai@suse.de:
At Sat, 1 Oct 2011 11:30:44 +0800, Raymond Yau wrote:
There is assertion when specify iface=PCM or iface=PCM,name='' when using amixer -c0 cget
according to the synthax
[[iface=<iface>,][name='name',][index=<index>,][device=<device>,][subdevice=<subdevice>]]|[numid=<numid>]
amixer -c0 cget iface=PCM amixer: control.c:258: snd_ctl_elem_info: Assertion `ctl && info && (info->id.name[0] || info->id.numid)' failed. Aborted
amixer -c0 cget iface=PCM,name='' amixer: control.c:258: snd_ctl_elem_info: Assertion `ctl && info && (info->id.name[0] || info->id.numid)' failed. Aborted
So, the empty string isn't checked before assert(). It's bad. It must be easy to fix. Care to create and send a patch?
The syntax seem also wrong.
[[iface=<iface>,][name='name',][index=<index>,][device=<device>,][subdevice=subdevice>]]|[numid=<numid>]
it should be [numid=<numid>] | [[iface=<iface>,name='name'][,index=<index>][,device=<device>]] | [[iface=<iface>,name='name'][,device=<device>][,subdevice=<subdevice>]]
since you cannot specify index and subdevice at the same time
The index and subdevice are different things. Typically, the index is set > 0 when multiple elements with the same iface and name are present. The subdevice is rather specification of the device itself, e.g. PCM substream number.
Takashi
Please ignore the previous patch
Attach the correct patch which fix the assertion
However it report error when
amixer -c0 cget iface=PCM,
amixer -c0 cget iface=PCM,name='ITD',