The memory returned from do_slabs_alloc is currently not properly aligned when compiled in an ILP32 environment. The memory returned is aligned to the size of the pointers, but we need to return a pointer that is suitable aligned so that it may be assigned to a pointer to any type of object.

The cas_id member cause the item-struct to require 8 byte boundaries.

Index: slabs.c
===================================================================
--- slabs.c     (revision 689)
+++ slabs.c     (working copy)
@@ -25,7 +25,7 @@
#define POWER_SMALLEST 1
#define POWER_LARGEST  200
#define POWER_BLOCK 1048576
-#define CHUNK_ALIGN_BYTES (sizeof(void *))
+#define CHUNK_ALIGN_BYTES 8
#define DONT_PREALLOC_SLABS

/* powers-of-N allocation structures */
--------------END------------

--
Trond Norbye


Reply via email to