public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/41990]  New: Incorrect stack setup on x86_64
@ 2009-11-08 20:25 cube at cubidou dot net
  2009-11-08 20:28 ` [Bug c/41990] " cube at cubidou dot net
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: cube at cubidou dot net @ 2009-11-08 20:25 UTC (permalink / raw)
  To: gcc-bugs

Provided a somewhat specific set of local variables, and as long as the code of
the function doesn't make any other function calls, gcc will decrease %rsp but
an incorrect and too small value.  This leads to local variables being
corrupted when the execution is interrupted;  this happens notably in the
kernel where interrupts use the stack of the thread they interrupted.

The file that I will hopefully be able to attach to that report demonstrates
the issue, if you look at the assembler output.  With the function call
commented out, gcc sets up the stack that way:

        movq    %rsp, %rbp
        subq    $152, %rsp

and later access one of the local variables with:

        movl    $0, -272(%rbp,%rax,4)

When the function call is uncommented, the subq instruction here will correctly
substract 272 to %rsp.

I've compiled a 4.4.2 for the sole purpose of doing this bug report;  NetBSD
comes with 4.1.3 and that's where the bug was initially spotted.


-- 
           Summary: Incorrect stack setup on x86_64
           Product: gcc
           Version: 4.4.2
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: cube at cubidou dot net
 GCC build triplet: x86_64-unknown-netbsd4.99.60
  GCC host triplet: x86_64-unknown-netbsd4.99.60
GCC target triplet: x86_64-unknown-netbsd4.99.60


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41990


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-11-08 20:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-08 20:25 [Bug c/41990] New: Incorrect stack setup on x86_64 cube at cubidou dot net
2009-11-08 20:28 ` [Bug c/41990] " cube at cubidou dot net
2009-11-08 20:29 ` pinskia at gmail dot com
2009-11-08 20:29 ` [Bug c/41990] New: " Andrew Pinski
2009-11-08 20:37 ` [Bug c/41990] " cube at cubidou dot net
2009-11-08 20:38 ` cube at cubidou dot net
2009-11-08 20:56 ` cube at cubidou dot net

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).