On Mon, May 02, 2005 at 07:39:45PM +0200, Rafael Garcia-Suarez wrote:
> > (or, we can return the cached value, unless getppid(2) returns 1, in
> > which case the cached value becomes 1.)
> 
> I implemented this as change 24367.
> 
> I let Nicholas judge whether it's too late for 5.8.7 or not...

It's not in perl-5.8.7. :(

Meanwhile I am studying Interchange source code for some reason (see
http://www.icdevgroup.org/) and they say "Interchange will not work
with a thread-enabled perl".  The problem seems to be exactly with
getppid().  There's a hackaround, though, for Debian and other vendors.
Here is a few chunks from interchange-5.2.0/lib/Vend/Server.pm:

        my $ppidsub = sub { return getppid };

        if($Global::Variable->{MV_GETPPID_BROKEN}) {
        #::logDebug("setting getppid broken");
                my $num = $Global::Variable->{MV_GETPPID_BROKEN} > 1
                                ? $Global::Variable->{MV_GETPPID_BROKEN}
                                : 64;
                $ppidsub = sub {
                        return syscall($num);
                };
        }

        select(undef,undef,undef,0.050) until &$ppidsub == 1;

So they simply use syscall(64) instead of getppid()...

Attachment: pgpWgBopoeiOs.pgp
Description: PGP signature

Reply via email to