On Mon, Jun 29, 2009 at 12:49:23PM +0300, Kostik Belousov wrote: > On Fri, Jun 26, 2009 at 04:59:29PM -0600, Barkley Vowk wrote: > > I've got a 7.2 box acting as NIS master, running rpc.yppasswdd. When > > remote users try to change their passwords they see: > > > > testing1# passwd mytest > > Changing NIS password for mytest > > Old Password: > > New Password: > > Retype New Password: > > passwd: pam_chauthtok(): error in service module > > > > On the server I get this in the logs: > > rpc.yppasswdd[36858]: pw_mkdb() failed > > > > I tracked the error message down to line 620 of yppasswdd_server.c, which > > lead me to libutil/pw_util.c. > > > > It looks like waitpid in mk_pwdb is returning the error "No child > > processes", which then makes mk_pwdb return an error. But the child does > > run and do it's job as expected. If you edit yppasswdd_server.c to ignore > > the return value of mk_pwdb, passwords are changed as expected. > > I think this is a side-effect of r184459/r186756, that made rpc.yppasswdd to > ignore SIGCHLD.
It only happens when the master uses /etc/master.passwd instead of /var/yp/master.passwd. The zombie mentioned in the commit log was yppwupdate. Two possible soluutions are: we wait until the push is succeed or we use a double fork. Personally, I prefer the former approach. Regards, Rong-En Fan
pgpSIhzZwtatl.pgp
Description: PGP signature

