而且,是的,这很奇怪。
我在 RH 7.6 上运行 openmpi-4.0.2 时遇到问题。一切都是段错误,甚至是非 MPI shell 脚本。如果我以另一个用户的身份运行,一切都会按预期运行 - 所以有一些用户依赖的东西。我一直在跳舞我的环境和其他用户的环境,寻找有毒的东西。
在将事物剥离为裸机之后,我发现底层 ssh 命令将环境变量 LD_LIBRARY_PATH 设置为以“:”结尾的字符串,这对我的用户来说是有毒的。它对其他用户无毒。
这发生在 RH 6.1、7.4 和 7.6 上。我有一个不会发生这种情况的 RH 7.1 系统(奇怪的是不断给予和给予)。
我需要两件事中的一件来解决这个问题:要么从“mpiexec”命令(我所有的尝试都失败到这一点)中填充底层ssh命令中的LD_LIBRARY_PATH,要么在我的用户环境中找到根本原因并修复它。
以下来自 RH 6.1,它给出了一个实际的错误消息,而不仅仅是一个段错误。
-bash-4.1$ /usr/bin/ssh -x $(hostname) 'LD_LIBRARY_PATH=barney:fred ; export LD_LIBRARY_PATH ; echo done ; env | egrep LD_'
done
LD_LIBRARY_PATH=barney:fred
-bash-4.1$ /usr/bin/ssh -x $(hostname) 'LD_LIBRARY_PATH=barney: ; export LD_LIBRARY_PATH ; echo done ; env | egrep LD_'
done
env: relocation error: libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
egrep: relocation error: libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
-bash-4.1$ /usr/bin/ssh -x $(hostname) 'LD_LIBRARY_PATH=barney ; export LD_LIBRARY_PATH ; echo done ; env | egrep LD_'
done
LD_LIBRARY_PATH=barney
-bash-4.1$ sudo su - otheruser
-bash-4.1$ /usr/bin/ssh -x $(hostname) 'LD_LIBRARY_PATH=barney:fred ; export LD_LIBRARY_PATH ; echo done ; env | egrep LD_'
done
LD_LIBRARY_PATH=barney:fred
-bash-4.1$ /usr/bin/ssh -x $(hostname) 'LD_LIBRARY_PATH=barney: ; export LD_LIBRARY_PATH ; echo done ; env | egrep LD_'
done
LD_LIBRARY_PATH=barney:
-bash-4.1$ /usr/bin/ssh -x $(hostname) 'LD_LIBRARY_PATH=barney ; export LD_LIBRARY_PATH ; echo done ; env | egrep LD_'
done
LD_LIBRARY_PATH=barney