From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: Luis Lozano <llozano@chromium.org>
Cc: Jakub Jelinek <jakub@redhat.com>, Han Shen <shenhan@chromium.org>,
Peter Zijlstra <peterz@infradead.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Nathan Lynch <Nathan_Lynch@mentor.com>,
lttng-dev@lists.lttng.org,
Bhaskar Janakiraman <bjanakiraman@chromium.org>,
Alexander Holler <holler@ahsoftware.de>,
Andrew Morton <akpm@linux-foundation.org>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [lttng-dev] current_thread_info() not respecting program order with gcc 4.8.x
Date: Fri, 22 Nov 2013 20:33:05 +0000 (UTC) [thread overview]
Message-ID: <1962730996.73684.1385152385447.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <542673482.73156.1385125589922.JavaMail.zimbra@efficios.com>
[-- Attachment #1: Type: text/plain, Size: 2019 bytes --]
Very interesting result:
Here is the asm diff between the problematic function compiled with gcc 4.8.2
vs that same function compiled with gcc 4.8.2 with the "lightly tested patch"
in bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
--- lttng-ring-buffer-client-overwrite.ko-4.8.2.objdump 2013-11-22 13:53:39.634901143 -0600
+++ lttng-ring-buffer-client-overwrite.ko-4.8.2-fix.objdump 2013-11-22 13:56:28.717746721 -0600
@@ -363,9 +363,9 @@ Disassembly of section .text:
504: e0647008 rsb r7, r4, r8
508: e0874004 add r4, r7, r4
50c: e0650004 rsb r0, r5, r4
- 510: e24bd028 sub sp, fp, #40 ; 0x28
+ 510: e58a6000 str r6, [sl]
514: e6ef0070 uxtb r0, r0
- 518: e58a6000 str r6, [sl]
+ 518: e24bd028 sub sp, fp, #40 ; 0x28
51c: e89daff0 ldm sp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc}
...
@@ -1938,8 +1938,8 @@ Disassembly of section .text:
1d74: ebfffffe bl 0 <warn_slowpath_null>
1d78: e51b205c ldr r2, [fp, #-92] ; 0x5c
1d7c: eafffef5 b 1958 <lttng_event_reserve+0xa5c>
- 1d80: e24bd028 sub sp, fp, #40 ; 0x28
- 1d84: e51b0048 ldr r0, [fp, #-72] ; 0x48
+ 1d80: e51b0048 ldr r0, [fp, #-72] ; 0x48
+ 1d84: e24bd028 sub sp, fp, #40 ; 0x28
1d88: e89daff0 ldm sp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc}
...
1d98: 0000017e .word 0x0000017e
So far, Nathan has not reproduced the issue with the fixed gcc. He's running those
stress tests a couple more hours to get more confidence in the result.
Not sure about the first two stores (they use the stack limit pointer "sl", which
I'm clueless about), but the last snippet clearly fixes a one instruction stack
usage below sp race window. Before the fix:
- 1d80: e24bd028 sub sp, fp, #40 ; 0x28
- 1d84: e51b0048 ldr r0, [fp, #-72] ; 0x48
sp = fp - 40
load from memory location fp - 72 .... wrong !
The full objdumps (before and after gcc fix) are attached.
Thoughts ?
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
[-- Attachment #2: gcc bz 58854 fix objdumps.zip --]
[-- Type: application/zip, Size: 35107 bytes --]
next prev parent reply other threads:[~2013-11-22 20:33 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <52803E5D.3050109@mentor.com>
2013-11-11 15:47 ` might_sleep warnings in overwrite mode Nathan Lynch
2013-11-14 18:16 ` Nathan Lynch
[not found] ` <52851395.3010306@mentor.com>
2013-11-15 2:34 ` Mathieu Desnoyers
[not found] ` <67652521.68027.1384482849638.JavaMail.zimbra@efficios.com>
2013-11-18 19:30 ` Nathan Lynch
2013-11-19 15:29 ` current_thread_info() not respecting program order with gcc 4.8.x Mathieu Desnoyers
2013-11-19 15:57 ` Peter Zijlstra
2013-11-19 16:13 ` Jakub Jelinek
2013-11-19 16:21 ` Peter Zijlstra
2013-11-19 16:05 ` Will Deacon
2013-11-19 17:02 ` Mathieu Desnoyers
2013-11-19 17:33 ` Peter Zijlstra
2013-11-19 21:56 ` Multiple local register variables w/ same register Richard Henderson
2013-11-19 22:08 ` Jakub Jelinek
2013-11-19 22:13 ` Måns Rullgård
2013-11-19 22:25 ` Mathieu Desnoyers
2013-11-19 22:34 ` [lttng-dev] " Mathieu Desnoyers
2013-11-20 0:41 ` current_thread_info() not respecting program order with gcc 4.8.x Linus Torvalds
2013-11-20 15:10 ` Mathieu Desnoyers
2013-11-21 16:02 ` Alexander Holler
2013-11-21 22:12 ` Luis Lozano
2013-11-21 22:32 ` Linus Torvalds
2013-11-21 23:03 ` Bhaskar Janakiraman
2013-11-21 23:18 ` Alexander Holler
2013-11-21 23:45 ` Luis Lozano
2013-11-22 0:39 ` Jakub Jelinek
2013-11-22 1:57 ` Mathieu Desnoyers
2013-11-22 2:36 ` Luis Lozano
2013-11-22 3:38 ` Mathieu Desnoyers
2013-11-22 8:16 ` Luis Lozano
2013-11-22 8:18 ` Luis Lozano
2013-11-22 8:33 ` Luis Lozano
2013-11-22 13:06 ` Mathieu Desnoyers
2013-11-22 20:33 ` Mathieu Desnoyers [this message]
[not found] ` <CANxoKduwK=9__0WFXFcTWjQn3Rbn+HgSWZyL0FN_VuJ2Q_2TPQ@mail.gmail.com>
2013-11-22 13:02 ` Mathieu Desnoyers
2013-11-22 0:17 ` Linus Torvalds
2013-11-22 0:34 ` Alexander Holler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1962730996.73684.1385152385447.JavaMail.zimbra@efficios.com \
--to=mathieu.desnoyers@efficios.com \
--cc=Nathan_Lynch@mentor.com \
--cc=akpm@linux-foundation.org \
--cc=bjanakiraman@chromium.org \
--cc=catalin.marinas@arm.com \
--cc=holler@ahsoftware.de \
--cc=jakub@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=llozano@chromium.org \
--cc=lttng-dev@lists.lttng.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=rth@twiddle.net \
--cc=shenhan@chromium.org \
--cc=torvalds@linux-foundation.org \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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 NNTP newsgroup(s).