[alsa-devel] ALSA Leaking memory

Jaroslav Kysela perex at perex.cz
Sun Nov 25 23:23:14 CET 2007


On Sun, 25 Nov 2007, Lennart Poettering wrote:

> On Sun, 25.11.07 22:56, Jaroslav Kysela (perex at perex.cz) wrote:
> 
> > > ==22198== 10 bytes in 1 blocks are definitely lost in loss record 1 of 3
> > > ==22198==    at 0x4023765: malloc (vg_replace_malloc.c:149)
> > > ==22198==    by 0x417C44F: strdup (strdup.c:43)
> > > ==22198==    by 0x4071954: snd_determine_driver (in /usr/lib/libasound.so.2.0.0)
> > > ==22198==    by 0x406E80C: snd_config_hook_load_for_all_cards (in /usr/lib/libasound.so.2.0.0)
> > > ==22198==    by 0x406EC7C: (within /usr/lib/libasound.so.2.0.0) 
> > > ==22198==    by 0x406F896: snd_config_searcha_hooks (in /usr/lib/libasound.so.2.0.0)
> > > ==22198==    by 0x406FA74: snd_config_search_alias_hooks (in /usr/lib/libasound.so.2.0.0)
> > > ==22198==    by 0x406FCD9: snd_config_search_definition (in /usr/lib/libasound.so.2.0.0)
> > > ==22198==    by 0x40952FE: (within /usr/lib/libasound.so.2.0.0)
> > > ==22198==    by 0x80484D7: main (in /home/lennart/alsa-test)
> > 
> > Broken valgrind? 
> 
> Unlikely.
> 
> > I cannot reproduce here and from first glance, the error 
> > path in snd_config_hook_load_for_all_cards is good.
> 
> I don't fully grok the code of that function
> (snd_config_hook_load_for_all_cards()), but from *my* first glance I see
> that snd_determine_driver() allocates the string. Immediately after
> that call there are at least two "continue"s which will cause immediate
> jumping to the next iteration of the loop this whole code lives in,
> without ever freeing the string.
> 
> Or am I blind or missed something?

No, I'm blind (seeing and associating continue to inner while) ;-) Thanks 
for notice. This commit should fix the problem:

http://hg.alsa-project.org/alsa-lib/rev/c8aa952a4579

						Jaroslav

-----
Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project


More information about the Alsa-devel mailing list