apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ruediger Pluem <rpl...@apache.org>
Subject Re: Strange continous SEVERE error after upgrading to APR 1.3, Critical poller failure, Timer expired
Date Wed, 25 Jun 2008 19:43:47 GMT


On 06/25/2008 02:55 PM, Nick Kew wrote:
> On Wed, 2008-06-25 at 12:43, Nick Kew wrote:
>> On Wed, 25 Jun 2008 10:32:58 +0200
>> Jimi Hullegård <jimi.hullegard@mogul.com> wrote:
>>
>>> Hi,
>>>
>>> After we upgraded APR from 1.2.8 to 1.3.0 we get a strange error in
>>> tomcat's catalina.out that we have never seen before:
>>>
>>> Jun 24, 2008 11:42:09 AM
>>> org.apache.tomcat.util.net.AprEndpoint$Poller run SEVERE: Critical
>>> poller failure (restarting poller): [62] Timer expired
>> Could this be related to
>> http://marc.info/?l=apr-dev&m=121347872322492&w=2
>>
>> I had something similar with httpd+Event MPM on solaris.
>> Current workaround is to use Worker MPM.
> 
> OK, I've just tested APR variants with Event MPM.
> 
> It is indeed that fix that breaks it.  When I revert
> the fix, the problem goes away.
> 
> The original patch posted to fix the same bug works fine.
> Can I suggest you apply the following patch to 1.3.x
> (should work on 1.3.0 or 1.3.2 too) and let us know if
> it fixes the problem you're seeing?
> 
> Index: poll/unix/port.c
> ===================================================================
> --- poll/unix/port.c    (revision 662044)
> +++ poll/unix/port.c    (working copy)
> @@ -315,7 +315,15 @@
> 
>      if (ret == -1) {
>          (*num) = 0;
> -        rv = apr_get_netos_error();
> +        if (errno == EINTR) {
> +            rv = APR_EINTR;
> +        }
> +        else if (errno == ETIME) {
> +            rv = APR_TIMEUP;
> +        }
> +        else {
> +            rv = APR_EGENERAL;
> +        }
>      }
>      else if (nget == 0) {
>          rv = APR_TIMEUP;
> 
> 

Looks good and makes sense.
apr_get_netos_error() in case of ETIME = 720062
APR_TIMEUP = 70007

So they are different.

But I would do

rv = apr_get_netos_error();

instead

of

rv = APR_EGENERAL;

Regards

Rüdiger




Mime
View raw message