So it sounds like I should go ahead and work on an implementation of the time caching using apr_atomic_cas32 and apr_atomic_dec32.  This won't be an issue for RHEL/CentOS/etc., because they're using old versions of httpd.  We can put something in the release notes saying that for 32-bit i486, i586, i686 builds, you should build APR with --enable-nonportable-atomics, for distro maintainers info when they package the new version.

On Wed, Dec 4, 2013 at 7:47 AM, Jim Jagielski <> wrote:
Adding APR dev list:

IMO, httpd should expect APR to "do the right thing". If APR
isn't doing that, then it's an APR bug and needs to be fixed/
addressed within APR.

All this implies that the atomics code in APR needs a serious
review and update.

We should also look into leveraging what we can from stdcxx
( as well
as OPA (

Also, IMO, the default should be non-portable

On Dec 3, 2013, at 7:41 PM, Daniel Lescohier <> wrote:

> So I think we should reach a consensus on what approach to take.  My goal was to implement an algorithm that is correct, with code that is easy to maintain.  I think using the apr_atomics functions meets those goals the best.  The downside are for those systems that are running 32-bit i486, i586, i686 systems where the default APR configure setting was not overridden for atomics.  There may be i686 servers still out there using 32-bit web server, probably memory-constrained systems like VPS hosts; the question is have they overridden the APR default configuration or not.
> Should we hold back on fixing this because of these systems?  If we go forward, should there be something in the release notes warning of this APR configuration issue?
> On Tue, Dec 3, 2013 at 7:15 PM, Daniel Lescohier <> wrote:
> (continued, hit send too early)
> %ix86   i386 i486 i586 i686 pentium3 pentium4 athlon geode
> However, I looked at the CentOS 6 apr.spec, and it's not overriding the default.