> 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.