[Pkg-alsa-devel] Bug#549531: libasound2: snd_device_name_hint() wrongly calls snd_config_delete()

John Lindgren john.lindgren at tds.net
Sun Oct 4 00:34:44 UTC 2009

Package: libasound2
Version: 1.0.21a-1
Severity: normal
Tags: patch


This bug first showed up because of a new ALSA output plugin for
Audacious audio player:

Essentially, any call to snd_device_name_hint() causes later calls to
snd_pcm_open() to fail with messages like these:

        ALSA lib conf.c:4600:(snd_config_expand) Unknown parameters CARD=Live,DEV=0 
        ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM rear:CARD=Live,DEV=0

This happens only for PCMs defined in ALSA config files (such as the
ones under /usr/share/alsa/cards), not for "default" or "hw:0,0"-style.
It does not seem to depend on a particular sound card. It can be
reproduced without Audacious by adding a call to pcm_list() before the
call to snd_pcm_open() in aplay.c from the alsa-utils package:

        $ ./aplay -D front:CARD=ICH6,DEV=0 Test.wav
            Intel ICH6, Intel ICH6
            Default Audio Device
            Intel ICH6, Intel ICH6
            Front speakers
            Intel ICH6, Intel ICH6
            4.0 Surround output to Front and Rear speakers
            Intel ICH6, Intel ICH6
            4.1 Surround output to Front, Rear and Subwoofer speakers
            Intel ICH6, Intel ICH6
            5.0 Surround output to Front, Center and Rear speakers
            Intel ICH6, Intel ICH6
            5.1 Surround output to Front, Center, Rear and Subwoofer speakers
            Intel ICH6, Intel ICH6 - IEC958
            IEC958 (S/PDIF) Digital Audio Output
            Discard all samples (playback) or generate zero samples (capture)
        ALSA lib conf.c:4600:(snd_config_expand) Unknown parameters CARD=ICH6,DEV=0
        ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM front:CARD=ICH6,DEV=0
        aplay: main:610: audio open error: Invalid argument

try_config(), called by snd_device_name_hint(), calls
snd_config_search_definition() at namehint.c line 243 and
snd_config_search_alias_hooks() at line 339, then calls
snd_config_delete() on the returned nodes at lines 331 and 383.  This
was probably meant to prevent leaking memory returned by the search
functions, but in fact it removes information from the config that is
needed by later calls, such as snd_pcm_open.  Hence, snd_pcm_open
behaves as though devices like "front" and "rear" do not exist.

I have attached a patch for aplay.c to reproduce the problem and a patch
for namehint.c to fix it.  One side effect of the fix (on my system at
least) is that two "null" devices are now listed by "aplay -L" and in

John Lindgren

-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)

Kernel: Linux 2.6.30-1-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libasound2 depends on:
ii  libc6                         2.9-25     GNU C Library: Shared libraries

libasound2 recommends no packages.

Versions of packages libasound2 suggests:
pn  libasound2-plugins            <none>     (no description available)

-- no debconf information
-------------- next part --------------
A non-text attachment was scrubbed...
Name: aplay.c.diff
Type: text/x-patch
Size: 288 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-alsa-devel/attachments/20091003/7f98f1b6/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: namehint.c.diff
Type: text/x-patch
Size: 517 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-alsa-devel/attachments/20091003/7f98f1b6/attachment-0001.bin>

More information about the Pkg-alsa-devel mailing list