On 9/27/17 12:52 AM, Zorro Lang wrote: > When test g/317 or g/318 on ARM server, we got a kernel exception: > > kernel: nsexec[8203]: SP Alignment exception: pc=00000000004010a0 sp=00000000005200e8 > > nsexec gives an unaligned child stack address to clone() system > call sometimes. For making sure it's always aligned, use > "__attribute__((aligned))" extension of GCC (Thanks this suggestion > from Eric sandeen). > > Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx> > --- > src/nsexec.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/src/nsexec.c b/src/nsexec.c > index f033b1a4..205dd081 100644 > --- a/src/nsexec.c > +++ b/src/nsexec.c > @@ -138,7 +138,8 @@ childFunc(void *arg) > > #define STACK_SIZE (1024 * 1024) > > -static char child_stack[STACK_SIZE]; /* Space for child's stack */ > +/* Space for child's stack */ > +static char __attribute__((aligned)) child_stack[STACK_SIZE]; Does it matter if the __attribute__ goes before or after the array name (child_stack[])? I can't quite tell from reading i.e. https://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Variable-Attributes.html#Variable%20Attributes if it does, though most examples I see have the __attribute__ after the variable name, i.e. > short array[3] __attribute__ ((aligned)); in the URL above. -Eric > > int > main(int argc, char *argv[]) > -- To unsubscribe from this list: send the line "unsubscribe fstests" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html