Hi David,

thanks for taking a gander!

* David Golden <[EMAIL PROTECTED]> [2007-12-19 16:35]:
> As I've reported elsewhere, Perl on windows has what I call the
> "taint-fork bug" -- forking while under taint just segfaults.

Ugh.

> With a little more poking around, the problem lies in your
> modification of @_ and use of goto &_do_fork.

That was a desperate guess; the previous version just returned
the $config hash and used DESTROY to trigger the fork when it
went out of scope. I blindly guessed that object destruction
across threads might be causing the problem, so I tried to get
rid of the hash before the fork.

> Changing the relevent lines to
> 
>   my @args = @{ $config}{ qw( parent child error retry ) };
>   undef $config;
>   _do_fork(@args);
> 
> passes all tests. You lose the nice callstack, but it doesn't
> segfault. I'm guessing that's really an issue with goto and
> pseudoforks or threads on Windows.

Does it continue to pass if you replace the first line with

    my ( $p, $c, $e, $r ) = @{ $config }{ qw( parent child error retry ) };

and then inline the body of `_do_fork`?

(Logically, it should, but this utterly undebuggable problem has
made me a bit superstitious…)

Regards,
-- 
Aristotle Pagaltzis // <http://plasmasturm.org/>

Reply via email to