Modules behaving differently on 32-bit and 64-bit systems?
mdounin at mdounin.ru
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
> 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.
More information about the nginx