perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject Re: mod_perl2 timely catching SIGPIPE
Date Fri, 11 Jun 2004 06:55:41 GMT
Jim Albert wrote:
> Stas Bekman wrote:
> 
>> Jim Albert wrote:
>>
>>> I'm trying to determine how to have my mod_perl apache server 
>>> properly catch a SIGPIPE signal in a timely manner.
>>>
>>> My environment is Apache/2.0.49 (Fedora) and mod_perl 2.
>>
>>
>>
>> Jim, please *always* report bugs and problems following these guidelines!
>> http://perl.apache.org/bugs/
>> and save yourself and us time. Thank you!
>>
>>> In my conf.d/perl.conf file I have the following:
>>> PerlFixupHandler Apache::SIG2
>>
>>
>> [...]
>>
>>> Under Apache/1.3.27 and mod_perl/1.27 I had a very similar 
>>> PerlFixupHandler in place (a slightly modified Apache::SIG.pm) to 
>>> catch a SIGPIPE and the SIGPIPE was caught and my signal handler 
>>> executed at the correct time... when the connection was broken by the 
>>> browser.  I would like to be able to continue to catch a SIGPIPE like 
>>> this under Apache2/modperl2.  Can anyone offer any suggestions as to 
>>> how to get my signal handler, PIPE, executed as soon as the SIGPIPE 
>>> is generated?
>>
>>
>>
>> What perl version are you using now (and which one have you used with 
>> 1.3.x?) (which you were supposed to sent as a part of the bug report).
> 
> 
> In my mod_perl environment (Apache 1.3 / mod_perl 1.27) where my perl 
> handler catches and immediately handles the SIGPIPE I am using perl 5.6.1.
> 
> In my mod_perl environment (Apache2.0.49 / mod_perl 2) where my perl 
> handler properly catches the SIGPIPE, but does not handle it immediately 
> I am using perl 5.8.3.

So most likely you'd have had the same problem with mod_perl 1.27, if you were 
to use perl 5.8.x there.

>> I don't think this has anything to do with what mod_perl version you 
>> are using.
> 
>  >
>  > Starting from 5.8.0 perl delays signal delivery, making signals safe.
> [...]
> 
> Stas, you are absolutely correct... thanks a lot!  I added the following 
> line to my server_startup.pl (Apache2.0.49 / mod_perl 2) which gets 
> included from my conf.d/perl.conf file:
> $ENV{PERL_SIGNALS} = "unsafe";
> 
> With that line in place, my PerlFixupHandler now catches a SIGPIPE and 
> immediately executes the SIGPIPE signal handler.
> 
> I hadn't had any significant problem that I noticed using "unsafe" 
> signals in the past and  I need the functionality that "unsafe" signals 
> provide me, so I'm going to go with "unsafe" signals in my 
> apache2/mod_perl2/perl5.8 environment.

Good to hear that it worked :)

>> Please let us know which technique has worked for you and it'd be 
>> great to have a section documenting this area, including full examples 
>> as in your original bug report.
> 
> 
> I've been researching this problem for several days so I'm anxious to 
> get an Apache2/mod_perl2 system into production now that I have a 
> solution.  When I get some time I'll post a detailed explanation of this 
> problem with examples to this mailing list.

Excellent, looking forward for your docs Jim.


-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Mime
View raw message