Hello Jeff, Eugene,

> Jeff Squyres wrote:
>
>> We use lt_dlopen() to open the plugins (Libtool's wrapper for a   
>> portable dlopen).  It opens all plugins (DSOs) in a private scope.    
>> That private scope is kept deep in the OPAL MCA base and not exposed   
>> elsewhere in the code base.  So if you manually dlopen a plugin again,  
>> I'll bet that the linker realizes that that DSO has already been  
>> loaded into the process space and doesn't actually load it again (but  
>> doesn't fail).  So the dlsyms fail because you don't have access to  
>> the private scope from where Libtool originally opened the DSO.

Shouldn't it work to re-dlopen the lib with RTLD_GLOBAL?

Also, recent libltdl should allow you to choose which scope you want in
the first place, local or global, through lt_dladvise.

Hope that helps.

Cheers,
Ralf

Reply via email to