httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Jagielski <...@jaguNET.com>
Subject Re: svn commit: r1410459 - in /httpd/httpd/trunk: docs/log-message-tags/next-number server/mpm/event/event.c server/mpm/eventopt/eventopt.c
Date Fri, 22 Nov 2013 19:39:48 GMT

On Nov 22, 2013, at 2:22 PM, Jeff Trawick <trawick@gmail.com> wrote:

> On Sat, Nov 17, 2012 at 6:00 AM, Ruediger Pluem <rpluem@apache.org> wrote:
> 
> 
> jim@apache.org wrote:
> > +        i = apr_atomic_dec32(&foo);
> > +        if (i >= 0) {
> 
> Why can we expect i < 0? apr_atomic_dec32 returns 0 if the dec causes foo to become
zero and it returns non zero
> otherwise. Shouldn't this behavior the same across all platforms? And if not should that
be fixed in APR?
> 
> icc (Intel) builds of httpd 2.4.7 event MPM (with apr-1.5.0) bomb here.
> 
> --enable-nonportable-atomics is specified for apr, though I haven't checked what that
does with icc.
> 

As noted back with the orig update, this test is due to the
fdqueue code in the new event:

apr_status_t ap_queue_info_set_idle(fd_queue_info_t * queue_info,
                                    apr_pool_t * pool_to_recycle)
{
    apr_status_t rv;
    int prev_idlers;

    ap_push_pool(queue_info, pool_to_recycle);

    /* Atomically increment the count of idle workers */
    /*
     * TODO: The atomics expect unsigned whereas we're using signed.
     *       Need to double check that they work as expected or else
     *       rework how we determine blocked.
     * UPDATE: Correct operation is performed during open_logs()
     */
    prev_idlers = apr_atomic_inc32((apr_uint32_t *)&(queue_info->idlers));

    /* If other threads are waiting on a worker, wake one up */
    if (prev_idlers < 0) {


See the comments ("The atomics expect unsigned whereas...") for
the reason, etc.

When you say "icc (Intel) builds of httpd 2.4.7 event MPM (with apr-1.5.0) bomb here."
do you mean that you get the 'atomics not working as expected' error
(and the internal server error) or that it core dumps?


Mime
View raw message