What version of Open MPI are you using?  We just made a 
minor-but-potentially-important change to how we handle our dlopen code in 
1.3.4.

Additionally, you might try configuring Open MPI with the --disable-dlopen 
configure switch.  This switch does two things:

1. Slurps all of Open MPI's plugins up into normal libraries (e.g., libmpi.so 
or libmpi.a)
2. Disables / compiles out all of Open MPI's dlopen (and related) code

If 1.3.4 doesn't fix your problem, then --disable-dlopen should.


On Dec 3, 2009, at 2:56 PM, Cupp, Matthew R wrote:

> Hi,
>  
> I’m having an issue with the MPI version of application and the dynamic 
> relocation of symbols from plugin shared libraries. 
>  
> There are duplicate symbols in both the main executable (Engine) and a shared 
> library that opened at runtime using dlopen (Plugin).  The plugin is opened 
> with the command dlopen(pFilepath, RTLD_LAZY | RTLD_LOCAL).  When I run the 
> entry point function that I get using dlsym, there is a segmentation 
> violation that occurs during the execution of that function.  The mpirun 
> outputs the backtrace of the segfault, and in it I can see that execution 
> goes from the engine to the plugin and back to the engine.  The plugin is 
> statically linked to a class library that is also statically linked to the 
> engine (but a different version) and contains a couple of files found in the 
> engine (again a different version).  The plugin should be completely self 
> sufficient, meaning it has everything it needs to function independently of 
> the engine, and should never need to have symbols dynamically linked to the 
> engine. 
>  
> When I run the single (non-MPI) version of the application, it runs fine 
> (apparently without plugin symbol relocation).  When I run the MPI version, I 
> get the segfault.  The code that handles plugins is the same in both 
> versions, and doesn’t rely on any MPI functionality.
>  
> Is there some way to change how the MPI runtime uses the executable so it 
> doesn’t export the symbols?  Or any way to prevent the dynamical symbol 
> relocation when loading the shared library?  Or linker flags that I could use 
> with plugin shared library so it does list its internal symbols?
>  
> I have a Stack Overflow question on this here:
> http://stackoverflow.com/questions/1821153/segfault-on-c-plugin-library-with-duplicate-symbols
>  
> Thanks!
> Matt
>  
> ______________________________
> Matt Cupp
> Battelle Memorial Institute
> Statistics and Information Analysis
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


-- 
Jeff Squyres
jsquy...@cisco.com


Reply via email to