Subject: Re: t7006 sometimes hangs in cronjobs on OS X

From: Thomas Rast <[email-masked]>
Date: Wed, 9 Feb 2011 20:16:54 +0100

Jeff King wrote:
> On Wed, Feb 09, 2011 at 03:38:46PM +0100, Thomas Rast wrote:
> 
> > I have been running a nightly next&pu smoke tester each on RHEL5 and
> > OS X.  For quite some time (at least a month), t7006 gets stuck
> > randomly (i.e., not every night).

BTW, I just noticed when re-reading this that it's a bit confusing.
It never hangs on RHEL (i.e. Linux), only on OS X.  (And I only
reported it now because I only just noticed that I had a month's worth
of zombies hanging around. :-)

> >   65211   ??  SN     0:00.03 /bin/sh t7006-pager.sh
> >   65798   ??  SN     0:00.04 /usr/bin/perl /Users/trast/git-smoke/t/test-terminal.perl git --no-pager log
> >   65846   ??  ZN     0:00.00 (git)
> >   65847   ??  ZN     0:00.00 (perl5.10.0)
> 
> Hmm. The zombie git process implies to me that git has exited, but for
> some reason we are still stuck in the copy-to-terminal loop and haven't
> reaped it. But the zombie perl process confuses me.  We fork a second
> time so that one process copies stderr and the other one copies stdout.
> Is the second perl process the stderr copier, and we are still blocking
> on copying stdout for some reason?

How do I find out?

> But then why is the command name
> different? Is /usr/bin/perl a wrapper script on your platform?

No, it's your average OS X binary (i.e., 'file' says it has an image
for every platform etc.).

The command name apparently just changes when it becomes a zombie:
when I run perl -e 'if (fork) {sleep 10;} else {sleep 5;}' they first
share the command line, but as soon as the child's sleep expires its
command line changes to '(perl5.10.0)'.

I'll have to put off the more involved experimentation somewhat :-(

-- 
Thomas Rast
trast@{inf,student}.ethz.ch