> Yes. I looked at all the local variables in that stack frame, and > their addresses on the stack are different from the one that > triggers the problem. [I assume you mean "void* values on the stack" rather than "addresses on the stack".] So when you printed the value of a one byte variable like stack_top_variable, you printed it with any alignment padding there might be? Or in case of GC_POINTER_ALIGNMENT < sizeof(void*), you accounted for mark_stack's candidate void* coming partially from different stack variables? And you accounted for the compiler reordering stack variables, eg to more optimally align data? I confirmed for example that stack_top_variable and message_p are allocated next to each other on the stack in my build, with the i variable not between them in memory.