String search error in libstdc ++

Trying to track down a segfault somewhere in MPI, I got this error:

./mpitest: symbol lookup error: /usr/lib64/libstdc++.so.6: bàþ;@ BC_
-------------------------------------------------------------------
mpirun has exited due to process rank 2 with PID 8729 on ...

      

First, I'm used to getting search errors when the process loads if the library path is wrong. But all of this happens before the process starts executing. This happened in the middle of the test result. Do all characters have to be resolved by the loader at runtime before starting the process?

Secondly, this symbol looks like garbage. This is, of course, not an ordinary malformed C ++ symbol.

Is it possible for memory corruption (since I'm tracking the segfault, something like this is probably happening) to mess up characters like this?

This was compiled with icpc 12.0.3 20110309 on a Linux 2.6.18-194.32.1.el5 x86_64 machine.

+3


source to share


1 answer


OpenMPI loads plugins as a dynamic shared object at runtime when MPI_INIT is called. See the FAQ . Therefore, the search for symbols occurs at this time. So it seems to me that your OpenMPI libmpi_cxx.so was built against a different libstdc ++ than the one available or found at runtime. in system.



You can either rebuild OpenMPI, or if the correct libstdc ++ is located somewhere on your system (not / usr / lib64 / libstdc ++. So.6), you can tweak LD_LIBRARY_PATH. Also, try setting LD_DEBUG = files to see if you are actually downloading 2 different libstdc ++.

+1


source







All Articles