Re: test program for waitpid/sigchld problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



quinet@xxxxxxxxxx (Raphael Quinet) writes:

> On Wed, 08 Nov 2000, Ludovic Poitou <ludovic.poitou@xxxxxxxxxxxxxx> wrote:
> > Here's the results I got with your test program on Solaris 8, OSF1,
> > HP-UX, AIX.
> [...]
> > Results on Solaris 8:
> > sigchld handler was called before waitpid (no status)
> [...]
> > Results on OSF1- V4.0 True64 - alpha
> > sigchld handler was called before waitpid (no status)
> [...]
> > Results on HP-UX B.11.00 E 9000/715
> > sigchld handler was called before waitpid (no status)
> [...]
> > Results on AIX 3.4
> > sigchld handler was called before waitpid (no status)
> 
> On Wed, 08 Nov 2000, Jarda Benkovsky <pvt.benkovsk@xxxxxxxxx> wrote:
> > FreeBSD 3.4-STABLE:
> > sigchld handler was called before waitpid (no status)
> > 
> > IRIX 6.5 IP22:
> > waitpid got the status before sigchld handler was called
> 
> 
> Thanks Ludovic and Jarda for these very interesting results!
> 
> According to these results, the signal handlers of the plug-ins are
> compatible with the following systems:
> - Linux 2.2.x
> - IRIX 6.5
> 
> But since May (when the signal handlers were changed, if I remember
> correctly), the five plug-ins "screenshot", "gz", "bz2", "mail", and
> "url" had no chance to work well on the following systems:
> - Solaris 2.6 and 8
> - OSF1
> - HP-UX 11.x
> - AIX 3.4
> - FreeBSD 3.4
> 
> ... and there was no bug report about this in the database!
> 
> Maybe we should all do our "mea culpa" and test a bit more seriously
> especially on non-Linux platforms, now that 1.2 is just around the
> corner.

Nope, it's just me with the "mea culpa" thing.

The

  gimp_signal_private (SIGCHLD, gimp_plugin_sigchld_handler, SA_RESTART);

call is just to restart system calls interrupted by SIGCHLD.
The signal handler does nothing more than removing the zombie.

But as all plug-ins which fork() also want to fetch waitpid()'s
return values.... EEEEK

I'll change the above line to 

  gimp_signal_private (SIGCHLD, SIG_DFL, SA_RESTART);

and we're done :)

Your patch is cool anyway because it does proper return value checking
and other right things (TM). I'll apply a modified version.

> By the way, could someone who works on the OS/2 port have a look at
> the __EMX__ part of the code in plug-in/common/gz.c?  If possible,
> after applying gimp-quinet-20001108-1.patch.gz that I uploaded to
> ftp.gimp.org.  That code looks very suspicious to me.  It contains a
> call to sleep(2) instead of using waitpid() for getting the output of
> the child process.  The four other plug-ins are using waitpid() as
> expected.  If the call to sleep() is the only way to get gz to work,
> then the four other plug-ins should be changed (with some comments
> explaining the problem).  If the other plug-ins work, then why is
> there such an ugly hack in gz.c?

No idea... Does GIMP still run on EMX at all? Did anybody try this
recently?

Thanks to all for the debugging.

bye,
--Mitch


[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux