我有 RM/COBOL 运行时 - 版本 7.10.00 在 CentOS 6.5 机器 (VM) 上运行
此 CentOS 允许通过使用本地域控制器对某些域用户的组进行身份验证来进行 SSH 访问。这些用户获得一个在 /home/domainname/username 中自动创建的主目录,而普通本地用户则驻留在 /home/username 中
相关的 Cobol 文件似乎位于
/usr/bin/runcobol
<- 一个文件
/usr/bin/rmcobolso
<- 一个目录,根据ls -a
无论如何,这是我的基本问题。当普通用户运行命令时
# runcobol
...这只是一个基本检查,看看命令是否有效...
他/她收到响应:
RM/COBOL Runtime - Version 7.10.00 for Linux (Intel).
Configured for 50 users.
Copyright (c) 1985, 1986-2000 by Liant Software Corp. All rights reserved.
Registration Number: 7H-1054-00367-0050
Usage: RUNCOBOL name [options]
Options: [A=arguments] [B=buffersize] [C=configfile] [D] [I] [K]
[L=libname] [M] [S=switches] [T=sortsize] [V] [X=configmod]
当我的域用户之一运行命令时
# runcobol
他/她收到回复:
Segmentation fault
什么可能导致这个问题?
编辑1:
strace runcobol
来自域用户。最后几行包括:
open("/usr/lib/libnss_winbind.so.2", O_RDONLY) = -1 ENOENT (No such file or direc
stat64("/usr/lib", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0
munmap(0xf76fa000, 48317) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
这些只是最后几行。前面的 20 行似乎都在寻找这个libnss_winbind.so.2
文件,该文件确实存在于我的服务器上/usr/lib64/libnss_winbind.so.2
(是的,我正在运行 CentOS 6.5 64 位)。从第一行开始strace runcobol
[test.user.co@co1tu-sv-conta bin]$ strace runcobol
execve("/usr/bin/runcobol", ["runcobol"], [/* 26 vars */]) = 0
[ Process PID=14369 runs in 32 bit mode. ]
因此,我猜测(但不确定)我安装了 64 位版本libnss_winbind.so.2
,但runcobol
正在寻找 32 位版本。那么为什么我的普通用户没有问题呢runcobol
?嗯,对于普通用户来说strace
,似乎根本就没有去寻找libnss_winbind.so.2
。我想这是有道理的,因为winbind
与 samba 和域身份验证有关,而本地用户没有这样做。
此时我又陷入了困境,因为我没有太多在 Linux 中调试的经验。根据我有限的猜测,我看到了三个选项:
在正在查找的
libnss_winbind.so.2
位置之一查找并安装 32 位版本。runcobol
我不知道在我的 64 位 CentOS 6.5 上安装哪个软件包runcobol
不用寻找就可以跑libnss_winbind.so.2
。我不知道为什么它要这样运行,因为用户已经通过身份验证并且在 CentOS 系统中。身份验证后我没有使用任何域资源,因此这似乎不是必要的步骤。libnss_winbind.so.2
是一个转移注意力的事情,与分段错误无关。
编辑2
gdb runcobol
当时的结果run
:
来自本地用户
Reading symbols from /usr/bin/runcobol...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/runcobol
RM/COBOL Runtime - Version 7.10.00 for Linux (Intel).
Configured for 50 users.
Copyright (c) 1985, 1986-2000 by Liant Software Corp. All rights reserved.
Registration Number: 7H-1054-00367-0050
Usage: RUNCOBOL name [options]
Options: [A=arguments] [B=buffersize] [C=configfile] [D] [I] [K]
[L=libname] [M] [S=switches] [T=sortsize] [V] [X=configmod]
Program exited with code 0373.
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6_5.4.i686
来自域用户
Reading symbols from /usr/bin/runcobol...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/runcobol
Program received signal SIGSEGV, Segmentation fault.
0x0805cc37 in OSINITIALIZE ()
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6_5.4.i686