[alsa-devel] External PCM hook SO is dlclosed after calling install, making it hard to have hooks in it

Takashi Iwai tiwai at suse.de
Tue Jun 30 11:21:39 CEST 2009


At Tue, 30 Jun 2009 10:38:04 +0400,
Paul Fertser wrote:
> 
> On Tue, Jun 30, 2009 at 08:33:15AM +0200, Takashi Iwai wrote:
> > > It looks like we're talking about different things. You seem to be
> > > talking about external PCM plugins, i'm talking about external functions
> > > for the "hook" PCM plugin. The code i question is in pcm/pcm_hooks.c
> > > in function snd_pcm_hook_add_conf:
> > > 
> > >         if (err >= 0) {
> > >                 if (args && snd_config_get_string(args, &str) >= 0) {
> > >                         err = snd_config_search_definition(root,
> > >                 "hook_args", str, &args);
> > >                         if (err < 0)
> > >                                 SNDERR("unknown hook_args %s", str);
> > >                         else
> > >                                 err = install_func(pcm, args);
> > >                         snd_config_delete(args);
> > >                 } else
> > >                         err = install_func(pcm, args);
> > >                 snd_dlclose(h);
> > >         }
> > 
> > Ah, I understand now.  Yes, this looks like a bug.
> > Meanwhile, it makes another bug if we just remove it.  There would be
> > no dlclose(), then.  It'd need resource tracking.
> 
> Exactly the reason i haven't tried to make a proper patch ;)
> 
> >  A lack of dlclose is no serious bug, though.
> 
> I hope you know better than me ;)
> 
> > So... just removing snd_dlclose() there fixes your problem?
> > If yes, I'll commit the fix.
> 
> TBH, i've not tried but i'm pretty sure it will fix the problem. I
> tried with dlopen workaround (to increase the refcounter) in install
> function and i tried with LD_PRELOAD'ing the library before starting
> an alsa app; both workarounds worked.

OK, I fixed this on GIT now.


Takashi


More information about the Alsa-devel mailing list