* src/thread.c (run_thread): Make sure the pointers to thread byte
stack are properly aligned. (Bug#25247)
static void *
run_thread (void *state)
{
- char stack_pos;
+ /* Make sure stack_top and m_stack_bottom are properly aligned as GC
+ expects. */
+ union
+ {
+ void *p;
+ char c;
+ } stack_pos;
+
struct thread_state *self = state;
struct thread_state **iter;
- self->m_stack_bottom = &stack_pos;
- self->stack_top = &stack_pos;
+ self->m_stack_bottom = &stack_pos.c;
+ self->stack_top = &stack_pos.c;
self->thread_id = sys_thread_self ();
acquire_global_lock (self);