`ls`在特定的目录上导致分段错误

我用$HOME/.local作为前缀来安装一些没有root权限的应用程序。 在$HOME/.local里有一个目录,我不能执行ls命令:

 [tuananh@server lib]$ ls Segmentation fault [tuananh@server lib]$ cd .. [tuananh@server .local]$ ls lib audit libform.a libncurses.a libopenblas.so.0 ... [tuananh@server .local]$ 

可能的原因是什么? uname -a为我的服务器:

 Linux server 2.6.32-358.2.1.el6.x86_64 #1 SMP Tue Mar 12 14:18:09 CDT 2013 x86_64 x86_64 x86_64 GNU/Linux 

编辑LD_TRACE_LOADED_OBJECTS=1 ls输出LD_TRACE_LOADED_OBJECTS=1 ls 。 我发现一些从这个目录加载的库。 那么现在应该怎么做才能find导致问题的原因呢?

 linux-vdso.so.1 => (0x00007fff831b8000) libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003d94800000) librt.so.1 (0x00007fdcde5a3000) libcap.so.2 => /lib64/libcap.so.2 (0x0000003d95c00000) libacl.so.1 => /lib64/libacl.so.1 (0x0000003d97c00000) libc.so.6 (0x00007fdcde1f5000) libdl.so.2 (0x00007fdcddff1000) /lib64/ld-linux-x86-64.so.2 (0x0000003d92c00000) libpthread.so.0 (0x00007fdcdddd3000) libattr.so.1 => /lib64/libattr.so.1 (0x0000003d96800000) 

当你在那里执行一个命令时,很可能你已经在那里安装了一些库,而不是系统库,它与系统中的命令是二进制不兼容的。 这可能是与glibc有关的东西。

您可以通过运行LD_TRACE_LOADED_OBJECTS=1 ls并检查输出来确认它是否包含当前目录中的任何文件。