[alsa-devel] load_for_all_cards bug

Takashi Iwai tiwai at suse.de
Mon Aug 10 14:17:48 CEST 2009


At Tue, 30 Jun 2009 12:37:10 -0700,
Kevin Goodsell wrote:
> 
> (I originally tried to send this via the moderator without subscribing 
> to the list, but it never went through and I never received a moderator 
> response. Apparently this list is set up as moderated, but nobody is 
> actually moderating it.)

Somehow I seem to have overlooked your post.  Sorry for the late
response.

> Summary: load_for_all_cards fails with existing configuration elements
> 
> In snd_config_hook_load_for_all_cards, the first call to 
> snd_config_search attempts to locate an existing configuration node with 
> the name of the driver.  Typically none is found, and everything is 
> good. However, if such a node is located, the next line assumes it is a 
> leaf node with type 'string' and calls snd_config_get_string to fetch 
> the string value. If this fails, the entire hook is abandoned.
> 
> Because of this, setting something like the following in asoundrc:
> 
> cards.<driver name>.foo 0
> 
> is sufficient to disable the entire card-specific configuration.
> 
> As a concrete example, I have a HDA-Intel sound card. dmix.conf includes 
> a way to set period_size, period_time, and periods by using 
> configuration elements of the form cards.<driver name>.pcm.dmix.<var>. 
> In ~/.asoundrc I add
> 
> cards.HDA-Intel.pcm.dmix.period_size 1024
> 
> This will cause HDA-Intel.conf to fail to load, and the pcm defined in 
> default.conf will fail to find the device-specific pcm 
> cards.HDA-Intel.pcm.default, and fall back on the default pcm using 
> plughw.  By attempting to configure dmix, I have disabled it.
> 
> Fixing this may just be a matter of changing the line in 
> snd_config_hook_load_for_all_cards from:
> 
> if (snd_config_search(root, fdriver, &n) >= 0) {
> 
> to:
> 
> if (snd_config_search(root, fdriver, &n) >= 0 && n->type != 
> SND_CONFIG_TYPE_COMPOUND) {

An easier fix is just to test snd_config_get_string() in the same
if condition.  I fixed on GIT tree now.


Thanks!

Takashi


More information about the Alsa-devel mailing list