At Tue, 30 Jun 2009 10:20:54 +0400, Paul Fertser wrote: > > On Tue, Jun 30, 2009 at 08:09:45AM +0200, Takashi Iwai wrote: > > At Tue, 30 Jun 2009 02:11:01 +0400, > > Paul Fertser wrote: > > > I've tried to implement an external shared object to be able to > > > execute arbitrary functions on PCM device opening and closing. After > > > quite some source code reading i had an almost working but segfaulting > > > example. This segfault is because snd_dlclose is called right after > > > calling a hook install function and therefore i can't snd_pcm_hook_add > > > functions from the same shared object. To me it looks like a bug but > > > probably i just don't see how this functionality is intended to be > > > used. Takashi, git-blame showed that it's you who stuffed this dlclose > > > call that bothers me ;) > > > > Well, right now, a plugin is designed to be bound with a single PCM > > instance. That's why dlcolse is called in snd_pcm_close(). > > 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. A lack of dlclose is no serious bug, though. So... just removing snd_dlclose() there fixes your problem? If yes, I'll commit the fix. thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel