0

而且,是的,这很奇怪。

我在 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
4

1 回答 1

0

我只用这个跳舞了三天。(必须让 openmpi 为我的用户工作。)

从这篇文章:https ://comp.os.linux.development.apps.narkive.com/P7hTPwxP/must-ld-library-path-end-with-a我发现终端“:”将添加您的 $HOME到 LD_LIBRARY_PATH 的末尾。这不是我所知道的(我在 *NIX 系统方面拥有 35 年的专业经验)。

我在我的主目录中发现了一个 libc.so.6 的副本,大约四个月前出于某种(可能当时有效)的原因,或者只是因为那天我很笨拙,我把它放在那里。删除了 libc.so.6,问题就消失了。

Two solutions: don't suffix LD_LIBRARY_PATH, and NEVER PUT ANY SHARED LIBRARIES IN YOUR HOME DIRECTORY EVERY.

Four days I'll never get back.

Experience is what you get when you didn't get what you wanted.

Conservation of Embarrassment: You won't find the answer to your stupid question yourself until you post it on stackoverflow.com.

于 2020-01-30T18:05:28.857 回答