* Re: Re: alsalib symbol problem
2002-09-17 13:35 Juergen Kreileder
@ 2002-09-17 13:57 ` Paul Davis
2002-09-17 15:32 ` Jaroslav Kysela
1 sibling, 0 replies; 8+ messages in thread
From: Paul Davis @ 2002-09-17 13:57 UTC (permalink / raw)
To: Juergen Kreileder; +Cc: Tim Goetze, Florian Bomers, alsa-devel
>> you probably are calling alsa from a shared object -- try
>>
>> dlopen ("libasound.so", RTLD_LAZY | RTLD_GLOBAL);
>>
>> in your module's init function.
>
>The need for RTLD_GLOBAL is somewhat ugly, usually one wants to load
>plugins with RTLD_LOCAL.
the suggestion is not that *your* plugin should use RTLD_GLOBAL, but
that RTLD_GLOBAL needs to be used when alsa-lib is linked into the
address space.
if you don't use RTLD_GLOBAL, then the symbols in libasound are not
availble for subsequently-loaded dynamically linked code.
>Is there any reason ALSA can't do something like
>
> if (name == NULL) {
> Dl_info dlinfo;
> static int dummy;
> dladdr((void *) &dummy, &dlinfo);
> name = dlinfo.dli_fname;
> }
perhaps because this implementation of dlopen is platform specific?
the dladdr function and the dlinfo structure are not present in
my version of glibc, at least not as far as i can tell.
--p
-------------------------------------------------------
Sponsored by: AMD - Your access to the experts on Hammer Technology!
Open Source & Linux Developers, register now for the AMD Developer
Symposium. Code: EX8664 http://www.developwithamd.com/developerlab
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: alsalib symbol problem
[not found] <E17rJDb-0005DN-00@zaphod.blackdown.de>
@ 2002-09-17 14:46 ` Juergen Kreileder
2002-09-17 14:59 ` Paul Davis
0 siblings, 1 reply; 8+ messages in thread
From: Juergen Kreileder @ 2002-09-17 14:46 UTC (permalink / raw)
To: Paul Davis; +Cc: Tim Goetze, Florian Bomers, alsa-devel
Paul Davis <pbd@op.net> writes:
> the problem is that libasound itself calls dlopen(), and the initial
> (non-RTLD_GLOBAL) linkage hasn't put libasound's symbol into the
> global namespace. hence, libasound's own dlopen'ed code can't access
> libasound itself.
I know, that's why I suggested to not do dlopen(NULL, ...) inside
libasound (see the code from my previous mail).
Juergen
--
Juergen Kreileder, Blackdown Java-Linux Team
http://www.blackdown.org/java-linux/java2-status/
-------------------------------------------------------
Sponsored by: AMD - Your access to the experts on Hammer Technology!
Open Source & Linux Developers, register now for the AMD Developer
Symposium. Code: EX8664 http://www.developwithamd.com/developerlab
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: alsalib symbol problem
2002-09-17 14:46 ` alsalib symbol problem Juergen Kreileder
@ 2002-09-17 14:59 ` Paul Davis
2002-09-17 15:17 ` Takashi Iwai
0 siblings, 1 reply; 8+ messages in thread
From: Paul Davis @ 2002-09-17 14:59 UTC (permalink / raw)
To: Juergen Kreileder; +Cc: Tim Goetze, Florian Bomers, alsa-devel
>Paul Davis <pbd@op.net> writes:
>
>> the problem is that libasound itself calls dlopen(), and the initial
>> (non-RTLD_GLOBAL) linkage hasn't put libasound's symbol into the
>> global namespace. hence, libasound's own dlopen'ed code can't access
>> libasound itself.
>
>I know, that's why I suggested to not do dlopen(NULL, ...) inside
>libasound (see the code from my previous mail).
how does this help?
-------------------------------------------------------
Sponsored by: AMD - Your access to the experts on Hammer Technology!
Open Source & Linux Developers, register now for the AMD Developer
Symposium. Code: EX8664 http://www.developwithamd.com/developerlab
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Re: alsalib symbol problem
2002-09-17 14:59 ` Paul Davis
@ 2002-09-17 15:17 ` Takashi Iwai
0 siblings, 0 replies; 8+ messages in thread
From: Takashi Iwai @ 2002-09-17 15:17 UTC (permalink / raw)
To: Paul Davis; +Cc: Juergen Kreileder, Tim Goetze, Florian Bomers, alsa-devel
At Tue, 17 Sep 2002 10:59:17 -0400,
Paul Davis wrote:
>
> >Paul Davis <pbd@op.net> writes:
> >
> >> the problem is that libasound itself calls dlopen(), and the initial
> >> (non-RTLD_GLOBAL) linkage hasn't put libasound's symbol into the
> >> global namespace. hence, libasound's own dlopen'ed code can't access
> >> libasound itself.
> >
> >I know, that's why I suggested to not do dlopen(NULL, ...) inside
> >libasound (see the code from my previous mail).
>
> how does this help?
it openes /usr/lib/libasound.so.2 (resolved from dladdr) explicitly,
so you'll get symbols from the handle without referring to the global
namespace.
this solution sounds nice to me -- if it really works ;)
can anyone test it?
Takashi
-------------------------------------------------------
Sponsored by: AMD - Your access to the experts on Hammer Technology!
Open Source & Linux Developers, register now for the AMD Developer
Symposium. Code: EX8664 http://www.developwithamd.com/developerlab
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Re: alsalib symbol problem
2002-09-17 13:35 Juergen Kreileder
2002-09-17 13:57 ` Paul Davis
@ 2002-09-17 15:32 ` Jaroslav Kysela
1 sibling, 0 replies; 8+ messages in thread
From: Jaroslav Kysela @ 2002-09-17 15:32 UTC (permalink / raw)
To: Juergen Kreileder
Cc: Tim Goetze, Florian Bomers, alsa-devel@lists.sourceforge.net
On Tue, 17 Sep 2002, Juergen Kreileder wrote:
> Tim Goetze <tim@quitte.de> writes:
>
> > Florian Bomers wrote:
> >
> >>Why does this happen ? I searched the mailing list archive and only
> >>found an explanation that symbols don't match and I need to
> >>recompile the ALSA lib. In my case it's a clean install of ALSA on a
> >>newly installed red hat system. There was never any other version of
> >>ALSA.
> >
> > you probably are calling alsa from a shared object -- try
> >
> > dlopen ("libasound.so", RTLD_LAZY | RTLD_GLOBAL);
> >
> > in your module's init function.
>
> The need for RTLD_GLOBAL is somewhat ugly, usually one wants to load
> plugins with RTLD_LOCAL. E.g. Java's System.load()/loadLibrary()
> doesn't use RTLD_GLOBAL. We could make a special case for ALSA in our
> Java implementation but that won't help people running JMF with
> another JVM.
>
> Is there any reason ALSA can't do something like
>
> if (name == NULL) {
> Dl_info dlinfo;
> static int dummy;
> dladdr((void *) &dummy, &dlinfo);
> name = dlinfo.dli_fname;
> }
>
> in snd_dlopen()? This would fix the snd_dlopen(NULL, ...) problem
> when the ALSA library has been dlopened with RTLD_LOCAL and the
> symbols are unknown in the main program.
Nice fix. Applied.
Jaroslav
-----
Jaroslav Kysela <perex@suse.cz>
Linux Kernel Sound Maintainer
ALSA Project http://www.alsa-project.org
SuSE Linux http://www.suse.com
-------------------------------------------------------
Sponsored by: AMD - Your access to the experts on Hammer Technology!
Open Source & Linux Developers, register now for the AMD Developer
Symposium. Code: EX8664 http://www.developwithamd.com/developerlab
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Re: alsalib symbol problem
2002-09-17 15:10 ` Juergen Kreileder
@ 2002-09-17 15:39 ` Florian Bomers
2002-09-17 18:14 ` Tim Goetze
0 siblings, 1 reply; 8+ messages in thread
From: Florian Bomers @ 2002-09-17 15:39 UTC (permalink / raw)
To: alsa-devel; +Cc: Tim Goetze
Thanks ! I guess Juergen's suggestion would be of general: a plugin should be
able to link to libasound with -lasound without the need that the plugin itself
is linked/dlopen()'ed with RTLD_GLOBAL. With increasing adoption of ALSA, we'll
see such a scenario more and more...
On the practical side - how can I solve the problem ? I can't change the way my
plugin is linked to the main app, so do I need to manually dlopen() libasound
myself with the RTLD_GLOBAL flag (and not use -lasound ??)
Thanks,
Florian
Juergen Kreileder wrote:
>
> Paul Davis <pbd@op.net> writes:
>
> >>Paul Davis <pbd@op.net> writes:
> >>
> >>> the problem is that libasound itself calls dlopen(), and the
> >>> initial (non-RTLD_GLOBAL) linkage hasn't put libasound's symbol
> >>> into the global namespace. hence, libasound's own dlopen'ed code
> >>> can't access libasound itself.
> >>
> >>I know, that's why I suggested to not do dlopen(NULL, ...) inside
> >>libasound (see the code from my previous mail).
> >
> > how does this help?
>
> You don't have to use RTLD_GLOBAL when dlopening libasound.so or
> libraries linked with libasound.so anymore.
>
> Juergen
>
> --
> Juergen Kreileder, Blackdown Java-Linux Team
> http://www.blackdown.org/java-linux/java2-status/
>
> -------------------------------------------------------
> Sponsored by: AMD - Your access to the experts on Hammer Technology!
> Open Source & Linux Developers, register now for the AMD Developer
> Symposium. Code: EX8664 http://www.developwithamd.com/developerlab
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/alsa-devel
--
Florian Bomers
Java Sound
Java Software/Sun Microsystems, Inc.
http://java.sun.com/products/java-media/sound/
-------------------------------------------------------
Sponsored by: AMD - Your access to the experts on Hammer Technology!
Open Source & Linux Developers, register now for the AMD Developer
Symposium. Code: EX8664 http://www.developwithamd.com/developerlab
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Re: alsalib symbol problem
2002-09-17 15:39 ` Florian Bomers
@ 2002-09-17 18:14 ` Tim Goetze
2002-09-17 18:21 ` Florian Bomers
0 siblings, 1 reply; 8+ messages in thread
From: Tim Goetze @ 2002-09-17 18:14 UTC (permalink / raw)
To: Florian Bomers; +Cc: alsa-devel
Florian Bomers wrote:
>On the practical side - how can I solve the problem ? I can't change the way my
>plugin is linked to the main app, so do I need to manually dlopen() libasound
>myself with the RTLD_GLOBAL flag (and not use -lasound ??)
until your copy of alsa has jaroslav's recent addition, both. after,
-lasound should do.
tim
-------------------------------------------------------
This SF.NET email is sponsored by: AMD - Your access to the experts
on Hammer Technology! Open Source & Linux Developers, register now
for the AMD Developer Symposium. Code: EX8664
http://www.developwithamd.com/developerlab
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Re: alsalib symbol problem
2002-09-17 18:14 ` Tim Goetze
@ 2002-09-17 18:21 ` Florian Bomers
0 siblings, 0 replies; 8+ messages in thread
From: Florian Bomers @ 2002-09-17 18:21 UTC (permalink / raw)
To: Tim Goetze; +Cc: alsa-devel
Thanks - Juergen just pointed out a hack to me: define LD_PRELOAD=libasound.so .
It works fine - until I'll be able to use Jaroslav's fix. Thanks Jaroslav, too!
Florian
Tim Goetze wrote:
>
> Florian Bomers wrote:
>
> >On the practical side - how can I solve the problem ? I can't change the way my
> >plugin is linked to the main app, so do I need to manually dlopen() libasound
> >myself with the RTLD_GLOBAL flag (and not use -lasound ??)
>
> until your copy of alsa has jaroslav's recent addition, both. after,
> -lasound should do.
>
> tim
>
> -------------------------------------------------------
> This SF.NET email is sponsored by: AMD - Your access to the experts
> on Hammer Technology! Open Source & Linux Developers, register now
> for the AMD Developer Symposium. Code: EX8664
> http://www.developwithamd.com/developerlab
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/alsa-devel
--
Florian Bomers
Java Sound
Java Software/Sun Microsystems, Inc.
http://java.sun.com/products/java-media/sound/
-------------------------------------------------------
This SF.NET email is sponsored by: AMD - Your access to the experts
on Hammer Technology! Open Source & Linux Developers, register now
for the AMD Developer Symposium. Code: EX8664
http://www.developwithamd.com/developerlab
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2002-09-17 18:21 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <E17rJDb-0005DN-00@zaphod.blackdown.de>
2002-09-17 14:46 ` alsalib symbol problem Juergen Kreileder
2002-09-17 14:59 ` Paul Davis
2002-09-17 15:17 ` Takashi Iwai
[not found] <E17rJn3-0005Ec-00@zaphod.blackdown.de>
2002-09-17 15:10 ` Juergen Kreileder
2002-09-17 15:39 ` Florian Bomers
2002-09-17 18:14 ` Tim Goetze
2002-09-17 18:21 ` Florian Bomers
2002-09-17 13:35 Juergen Kreileder
2002-09-17 13:57 ` Paul Davis
2002-09-17 15:32 ` Jaroslav Kysela
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.