[SSI-users] bug regarding "pvp_comm_de"?
Brought to you by:
brucewalker,
rogertsang
From: Wang, S. <SW...@ps...> - 2004-01-30 22:02:37
|
I can not subscribe to developers' list so I post it here. My test openssi cluster (1.0.0 rc1 RH9) used to crash under heavy or moderate load, when loadleveling is happening. I pinpointed the error to "is_loadlevelable" function in load_level.c. this line: dentry = dget(PVP(p->p_vproc)->pvp_comm_de) caused kernels oops because pvp_comm_de's reference count is 0. So I search the source tree for "pvp_comm_de" and found out the problem MIGHT be in cluster/ssi/vproc/dvp_vpops.c, where it called dput but did not set the pointer to NULL after. After apply the patch below, it no longer crashs, I need someone to verify the logic of this patch and make sure that it won't have side effects. Thanks Shen --- cluster/ssi/vproc/dvp_vpops.c 2004-01-15 18:02:03.000000000 -0600 +++ /usr/src/redhat/BUILD/kernel-2.4.20/linux-2.4.20/cluster/ssi/vproc/dvp_vpops .c 2004-01-27 12:36:51.000000000 -0600 @@ -732,7 +732,9 @@ pv->pvp_pproc->exit_signal = -2; dput(pv->pvp_comm_de); + pv->pvp_comm_de = NULL; mntput(pv->pvp_comm_mnt); + pv->pvp_comm_mnt = NULL; } VPROC_UNLOCK_EXCL(v, "vpop_exit"); |