panic: fold_constants JMPENV_PUSH returned 2 at /usr/share/perl5/File/Temp.pm line 1015. panic: fold_constants JMPENV_PUSH returned 2 at /usr/share/perl5/File/Temp.pm line 1015. panic: fold_constants JMPENV_PUSH returned 2 at /usr/share/perl5/File/Temp.pm line 1015. #### panic: fold_constants JMPENV_PUSH returned 2 at /usr/local/share/perl/5.10.1/Net/HTTP/Methods.pm line 596. #### panic: fold_constants JMPENV_PUSH returned 2 at /usr/local/share/perl/5.10.1/Net/HTTP/Methods.pm line 596. panic: fold_constants JMPENV_PUSH returned 2 at /usr/local/share/perl/5.10.1/URI.pm line 132. #### my $first_time = 1; my @signals = qw/INT TERM USR2 HUP/; for my $sig (@signals) { $SIG{$sig} = sub { if ($first_time) { $first_time = 0; exit(1); # we need exit, it will call all destructors which will destroy tempfiles } }; } dump_error() unless (defined eval {do_work(); 1; }); $SIG{$_} = 'IGNORE' for (@signals); # THIS CAN BE REMOVED - RESULT IS SAME kill(POSIX::SIGUSR1, $parent_pid); # THIS CAN BE REMOVED - RESULT IS SAME exit(1); #### my $first_time = 1; for my $sig (qw/INT TERM CHLD USR1 HUP/) { $SIG{$sig} = sub { local ($!,$^E,$@); if ($first_time) { $first_time = 0; kill (POSIX::SIGUSR2, keys %{$self->{children}}); print STDERR "EXIT on SIG$sig\n"; exit(1); } }; } do_parent_work();