求助:奇怪的[defunct]进程

求助:奇怪的[defunct]进程

最近遇到一个问题,困扰了我两星期,还是没解决,所以向各位求助.

情况如下:
我公司有一项目,对安全要求及高,所有的相关文件资料,都保存在一个
专用的服务器上,该服务器单独安放在一24小时监控的房间,并且通过
防火墙与外部隔离,防火墙只开了一个22口(SSH),服务器上只运行一
SSH后台进程,(SSH 公司产品,非OPENSSH).该口有两个作用,一是允
许系统管理员从特定主机进入,另外就是应用程序以特定用户,从特定
主机进入.
我在该系统上创建了一个用户:secureuser,并把默认的LOGIN SHELL
从/bin/bash,改为自己写的一个假SHELL: xsh.该SHELL用bash编写,
内部定义了一些命令如LS/MV/MD/CP等,供外部程序调用.我还创建了
正确的PUBLIC/PRIVATE KEY给SSH用.这样,外部程序,可以通过SSH
对内部文件进行操作.一般就像通过SSH执行远程命令一样:
ssh secureuser@fileserver.x.com MV /abc /ABC

在开发和测试环境下,一切非常顺利,达到了设计要求.但在进入生产环
境(production-stage)测试时遇到了一个怪现象,远程系统执行时经
常莫名其妙地HANG UP.用PS看进程表,发现[xsh <defunc>]进程,
也就是说,通过SSH远程执行时,SSHD FORK的子进程已经结束,但不知
何故,SSHD并没有去读子进程的返回码并退出,这样xsh就变成了一个僵
尸(ZOMBIE)进程.仔细研究后,我发现系统并不是真正挂住了,过上1-2
分钟,有时1-2小时,有时1-2天,它会去读返回值并继续,当然更长的时间
我没耐心去等待.或者当它挂住时,如果你在客户端(发SSH命令端)按一
个回车,它又会继续.这种现象不是每次发生,但很频率较高,而且对有些
目录操作,更容易出现.

系统环境:
OS: Redhat 7.2, kernel 2.4.9.xx
ssh: 2.4.0
firewall: ipchain/iptable
BASH: 2.05.8

注: 由于权限,我无法接触到PRODUCTION环境,以上只是猜测.我用SSH的
DEBUG功能做的测试也是在其他SERVER上进行. 两个SERVER之间有如下
不同:
PRODUCTION                 TEST
3 网卡,但只用两个           2 网卡
2 CPU                      1 CPU
2.4.9-31 enterprise SMP    2.4.9-1X
SCSI                       IDE
8 HDs                      1 HD
仅安装了部分RPM包,
具体情况不清楚              几乎安装了全部RPM包

我分析了部分SSH CODE,发现它核心是一个事件循环,通过一系列CALLBACK
函数来驱动.我怀疑是某些原因导致SSHD无法正确CATCH SIGNAL 17(SIGCHLD).

不知道各位又什么好主意帮我解决这个问题.      
如果有方法,请立即EMAIL我:allen_zhao@hotmail.com