Open MPI logo

MTT Devel Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all MTT Devel mailing list

Subject: Re: [MTT devel] fix zombie commit
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2013-02-26 05:32:19

On Feb 26, 2013, at 2:11 AM, Mike Dubman <miked_at_[hidden]> wrote:

> On Mon, Feb 25, 2013 at 6:24 PM, Jeff Squyres (jsquyres) <jsquyres_at_[hidden]> wrote:
> >Looking at the code, you're checking for zombie status before MTT kills the proc. Am I reading that right?
> I don`t think the order matters, if process is not Zombie yet and about to be killed by MTT later - it is a good flow.
> If process is already Zombie - mtt will not be able to kill it anyway and and can stop waiting and switch to the new task.

No, the _kill_proc() routine does both a kill() and a waitpid(). The waitpid() should reap the zombie.

I.e., if the process has died, MTT simply just hasn't reaped it yet. Hence, it's a zombie.

> >If so, then it could well be that the process has exited but not yet been reaped (because _kill_proc() hasn't been invoked yet). If this is the case, is the real cause of the problem that >the OUTread and ERRread aren't being closed when the child process exits, and therefore we keep looping looking for new output from them?
> yep, sounds like it can be the cause, need to look into this code.

Ok. It would be interesting to see if the process dies, but:

1) MTT is still blocking in select() (i.e., OUTread and OUTerr aren't returning 0 from sysread upon process death)

2) $done is somehow not getting set to 0, and therefore MTT is still looping until the timeout expires

Jeff Squyres
For corporate legal information go to: