From: Arnaud Giersch Date: Thu, 13 Mar 2014 21:45:38 +0000 (+0100) Subject: Align stack on a 16 bytes boundary in raw_makecontext. X-Git-Tag: v3_11~216^2~1 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0c5f183849112970e4ce7f7af4df4d2267cda7e1?hp=ca7e44eedb71bed5a09556bdd8e3fa13be21c9ce Align stack on a 16 bytes boundary in raw_makecontext. A wrongly aligned stack may lead to segfaults. --- diff --git a/src/simix/smx_context_raw.c b/src/simix/smx_context_raw.c index df733cda81..f380e90843 100644 --- a/src/simix/smx_context_raw.c +++ b/src/simix/smx_context_raw.c @@ -62,6 +62,7 @@ __asm__ ( #endif " mov %rdi,%rax\n" /* stack */ " add %rsi,%rax\n" /* size */ + " andq $-16, %rax\n" /* align stack */ " movq $0, -8(%rax)\n" /* @return for func */ " mov %rdx,-16(%rax)\n" /* func */ " mov %rcx,-24(%rax)\n" /* arg/rdi */ @@ -137,6 +138,7 @@ __asm__ ( #endif " movl 4(%esp),%eax\n" /* stack */ " addl 8(%esp),%eax\n" /* size */ + " andl $-16, %eax\n" /* align stack */ " movl 12(%esp),%ecx\n" /* func */ " movl 16(%esp),%edx\n" /* arg */ " movl %edx, -4(%eax)\n"