【发布时间】:2012-03-13 19:07:13
【问题描述】:
试图在 MPI 中的某处追踪一个段错误,我收到了这个错误:
./mpitest: symbol lookup error: /usr/lib64/libstdc++.so.6: bàþ;@ BC_
-------------------------------------------------------------------
mpirun has exited due to process rank 2 with PID 8729 on ...
首先,如果库路径错误,我习惯于在加载进程时出现查找错误。但这些都发生在进程开始执行之前。这发生在测试输出的中间。运行时加载器不应该在进程开始之前解析所有符号吗?
其次,那个符号看起来像垃圾。它肯定不是一个正常的错位 C++ 符号。
内存损坏(因为我正在跟踪一个段错误,很可能发生了类似的事情)会损坏这样的符号吗?
这是在 Linux 2.6.18-194.32.1.el5 x86_64 机器上使用 icpc 12.0.3 20110309 编译的。
【问题讨论】:
-
您的进程是否可以动态加载符号?在这种情况下,内存损坏可能是此类垃圾的原因。你试过valgrind吗?
-
@Jonas:嗯,我的 代码没有。我不知道 OpenMPI/Boost::MPI 是否可以。运行 Valgrind 的问题在于,仅调用 MPI_Init_Thread 就会产生大约 25,000 个错误,因此很难知道其中是否有任何一个是原因。