Thanks for the details. I can now reproduce the segfault. I'll post again when this is fixed.
I've traced it down to a perl-core issue. I'm submitting a report to p5p and I've CC'ed you, so you can stay in the loop.
Meanwhile, there are two workarounds:
You must start with not using a tied STDOUT, i.e. change the SetHandler setting to 'modperl':
<Directory "/home/nk/www/vhosts/web/apps/">
SetHandler modperl
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders +GlobalRequest
Options ExecCGI
</Directory>now you can either use $r->print(), or tie STDOUT to $r in each thread where you want to use it. Do not tie it before starting the threads, since you will hit the same problem. The following program demonstrates both techniques:
use strict; use warnings FATAL => 'all';
use threads;
my $r = shift;
$r->print("Content-type: text/plain\n\n");threads->create(
sub {
$r->print("thread 1\n");
}, undef);threads->create(
sub {
tie *STDOUT, $r;
print "thread 2\n";
}, undef);$r->print("done");as you use +GlobalRequest you can replace:
my $r = shift;
with
my $r = Apache->request;
but it's a bit slower.
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
