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()...
pgpWgBopoeiOs.pgp
Description: PGP signature
