From: Eli Zaretskii Date: Fri, 23 Dec 2016 08:24:30 +0000 (+0200) Subject: Avoid aborts due to unaligned byte stack of threads X-Git-Tag: emacs-26.0.90~1030 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c4e38581d3b4d6b19921f0db81f319d19ae4fb9e;p=emacs.git Avoid aborts due to unaligned byte stack of threads * src/thread.c (run_thread): Make sure the pointers to thread byte stack are properly aligned. (Bug#25247) --- diff --git a/src/thread.c b/src/thread.c index 9613d1435f7..3f9595274e9 100644 --- a/src/thread.c +++ b/src/thread.c @@ -643,12 +643,19 @@ do_nothing (Lisp_Object whatever) 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);