On Nov 22, 2013, at 3:24 PM, Jeff Trawick <traw...@gmail.com> wrote:

> On Fri, Nov 22, 2013 at 2:52 PM, Jim Jagielski <j...@jagunet.com> wrote:
> Note, the only think changed in event now (via 
> https://svn.apache.org/viewvc?view=revision&revision=1542560)
> is that event *checks* that atomics work as required for
> event... if the check fails, it means that event has
> been "broken" on that system, assuming it ever hit
> blocked idlers, for a *long* time...
> 
> Got it...  fdqueue.c is asking for trouble...
> 

Yeah.

> I'm using atomic/unix/ia32.c with icc too.
> 
> Need to compare generated code...  I hate stuff like "int foo() { unsigned 
> char x;  ... return x;  }"
> 
>  
> 
> You should be seeing it in trunk as well...
> 
> 
> On Nov 22, 2013, at 2:43 PM, Jeff Trawick <traw...@gmail.com> wrote:
> 
> > On Fri, Nov 22, 2013 at 2:39 PM, Jim Jagielski <j...@jagunet.com> wrote:
> >
> > On Nov 22, 2013, at 2:22 PM, Jeff Trawick <traw...@gmail.com> wrote:
> >
> > > On Sat, Nov 17, 2012 at 6:00 AM, Ruediger Pluem <rpl...@apache.org> wrote:
> > >
> > >
> > > j...@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?
> >
> >
> > "atomics not working as expected"
> >
> > Let me see what code is used...
> >
> > --
> > Born in Roswell... married an alien...
> > http://emptyhammock.com/
> 
> 
> 
> 
> -- 
> Born in Roswell... married an alien...
> http://emptyhammock.com/

Reply via email to