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/>