From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,URIBL_BLOCKED, URIBL_DBL_BLOCKED_OPENDNS autolearn=ham autolearn_force=no version=3.4.6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1693065892; bh=+SGIC5dxof8GjOe3TXq/u5jq4AcqCToAtMLWOcxfXuU=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=NMc6oDfrFJVVpZ1Fs+xnzNsqDfIUGlVyTHSuzeXw25zDnP2xtcBbtE7PkGTDmtKgf v8R1nLBoNLgXBYEQ7y7rCoBvviHgG1jD/iVlwspXNTlR4awOLkbAAnxXCdFWuDhQcB NltGo158Wqh4+OchlBrJYWDgMkAZfPuTGmr9gKDfEUuNsANGh00e14P80RlLQ0xThx Eky5S+D+hN7lWyLw7L29/FsYy0JCboKq2aIVFPTcvu9l4jLpUF4pKoIZtOHG4mXUps E7edd52VKn66DihASghC8rH+yqLUscn3iy4XueGoCacSkmgp4Zgsdzg69iI6lijfKa fjy9lqI2oovLw== Received: from biznet-home.integral.gnuweeb.org (unknown [182.253.126.208]) by gnuweeb.org (Postfix) with ESMTPSA id F355724B175; Sat, 26 Aug 2023 23:04:49 +0700 (WIB) Date: Sat, 26 Aug 2023 23:04:45 +0700 From: Ammar Faizi To: Zhangjin Wu Cc: Willy Tarreau , Thomas =?iso-8859-1?Q?Wei=DFschuh?= , Nicholas Rosenberg , GNU/Weeb Mailing List , Michael William Jonathan , Linux Kernel Mailing List Subject: Re: [PATCH v1 0/1] Fix a stack misalign bug on _start Message-ID: References: <20230826141632.1488740-1-ammarfaizi2@gnuweeb.org> <20230826152024.7773-1-falcon@tinylab.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20230826152024.7773-1-falcon@tinylab.org> X-Bpl: hUx9VaHkTWcLO7S8CQCslj6OzqBx2hfLChRz45nPESx5VSB/xuJQVOKOB1zSXE3yc9ntP27bV1M1 List-Id: On Sat, Aug 26, 2023 at 11:20:24PM +0800, Zhangjin Wu wrote: > > $eax : 0x56559000 → 0x00003f90 > > $ebx : 0x56559000 → 0x00003f90 > > $ecx : 0x1 > > $edx : 0xf7fcaaa0 → endbr32 > > $esp : 0xffffcdbc → 0x00000001 > > $ebp : 0x0 > > $esi : 0xffffce7c → 0xffffd096 > > $edi : 0x56556060 → <_start+0> xor %ebp, %ebp > > $eip : 0x56556489 → movaps %xmm0, 0x30(%esp) > > > > pop %eax > > add $0x2b85, %eax > > movups -0x1fd0(%eax), %xmm0 > > → movaps %xmm0, 0x30(%esp) <== trapping instruction > > movups -0x1fe0(%eax), %xmm1 > > movaps %xmm1, 0x20(%esp) > > movups -0x1ff0(%eax), %xmm2 > > movaps %xmm2, 0x10(%esp) > > movups -0x2000(%eax), %xmm3 > > > > [#0] Id 1, Name: "test", stopped 0x56556489 in sse_pq_add (), reason: SIGSEGV > > > > (gdb) bt > > #0 0x56556489 in sse_pq_add () > > #1 0x5655608e in main () > > > > Since we have a new 'startup' test group, do you have a short function > to trigger this error? Here is a simple program to test the stack alignment. #include "tools/include/nolibc/nolibc.h" __asm__ ( "main:\n" /* * When the call main is executed, the * %esp is 16 bytes aligned. * * Then, on function entry (%esp mod 16) == 12 * because the call instruction pushes 4 bytes * onto the stack. * * subl $12, %esp will make (%esp mod 16) == 0 * again. */ "subl $12, %esp\n" /* * These move instructions will crash if %esp is * not a multiple of 16. */ "movdqa (%esp), %xmm0\n" "movdqa %xmm0, (%esp)\n" "movaps (%esp), %xmm0\n" "movaps %xmm0, (%esp)\n" "addl $12, %esp\n" "xorl %eax, %eax\n" "ret\n" ); > Perhaps it is time for us to add a new 'stack alignment' test case for > all of the architectures. I don't know the alignment rules for other architectures (I only work on x86 and x86-64). While waiting for the maintainers' comment, I'll leave the test case decision to you. Feel free to take the above code. Extra: It's also fine if you take my patch with the 'sub $(16 - 4), %esp' change and batch it together in your next series. -- Ammar Faizi