Modules behaving differently on 32-bit and 64-bit systems?

Maxim Dounin mdounin at
Mon Oct 21 11:14:20 UTC 2013


On Mon, Oct 21, 2013 at 01:13:56AM -0400, andrewc wrote:

> Hi there,
> I have built nginx 1.5.6 from source, with a 3rd party module (xtoken -
> I have it working fine on a 32-bit Debian Squeeze system. An identical build
> on a 64-bit Centos 6.4 system, with an identical configuration file results
> in the error: "nginx: [crit] ngx_slab_alloc() failed: no memory" on
> startup.
> I have narrowed the problem to the xtoken module, in as much as removing
> references to it on the 64-bit system results in nginx starting correctly.
> I have had a quick look at the module source code, and can't see anything
> that is obviously 32-bit -centric, other than a couple of variables that
> have been declared as uint32_t.
> Is it correct to assume that a properly written module will work correctly
> on both 32 and 64-bit systems?


> Is there any additional nginx configuration that needs to be performed on
> 64-bit systems?

In some cases, additional configuration may be required due to 
different data sizes.

Quick looks suggests that the problem in xtoken module is likely 

It tries to estimate size of shared memory zone needed to keep 
it's data, but the estimate likely fails on 64-bit platforms due 
to internal structures of slab allocator being bigger on these 

The same code may also unexpectedly fail in the future on internal 
slab allocator changes.

Maxim Dounin

More information about the nginx mailing list