Hi Marti, The subject was wrong in the previous emails. It should of course have been "beta 1".
I've tried building the new beta 2, and 'make check' fails on 64-bit OSX: The first call to DebugFree fails with "allocated by a different thread". The reason is that the DebugMalloc/DebugFree functions assume that the MemoryBlock struct doesn't have any padding between members. But on x86-64, the struct is padded with 4 bytes after "KeepSize" as all pointers must be 8-byte aligned (true for linux too). typedef struct { cmsUInt32Number KeepSize; cmsContext WhoAllocated; cmsUInt8Number mem[1]; } MemoryBlock; So the calculation of the block header offset fails when using this define: #define SIZE_OF_MEM_HEADER (sizeof(cmsUInt32Number) + sizeof(cmsContext)) Breaking in DebugFree, with (void*)Ptr argument = 0x100100160 (gdb) x/32x (0x100100160 - 16) 0x100100150: 0x00000038 0x00000000 0x00000001 0x00000000 0x100100160: 0x00000000 0x00000000 0x00000000 0x00000000 0x100100170: 0x00000000 0x00000000 0x00000000 0x00000000 Changing KeepSize to cmsUInt64Number (and updating the #define) makes the testbed run successfully - and the returned memory will always be 8 and 16-byte aligned. Only adding 12 bytes may break for 32-bit platforms that require 8-byte alignment for e.g. doubles, so always using 64 bit for the size might be the easiest solution even for 32-bit platforms. ---- - Peter Speck ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Lcms-user mailing list Lcms-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lcms-user