public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: David Miller <davem@davemloft.net>
To: skaller@users.sourceforge.net
Cc: dave.korn@artimi.com, tomash.brechko@gmail.com, matz@suse.de,
	 gcc@gcc.gnu.org
Subject: Re: Optimization of conditional access to globals: thread-unsafe?
Date: Mon, 29 Oct 2007 04:32:00 -0000	[thread overview]
Message-ID: <20071028.203246.31471717.davem@davemloft.net> (raw)
In-Reply-To: <1193628070.3963.105.camel@rosella.wigram>

From: skaller <skaller@users.sourceforge.net>
Date: Mon, 29 Oct 2007 14:21:10 +1100

> 
> On Sun, 2007-10-28 at 18:37 -0700, David Miller wrote:
> > Even basic correct single-threaded UNIX programs are broken by these
> > speculative stores.  If I use a conditional test to protect access to
> > memory mmap()'d with a read-only attribute, GCC's optimization will
> > cause write-protection exceptions.
> 
> That is the programmers fault, they should have accessed the 
> variable using a const. Failing to do so gives the compiler
> permission to write speculatively.

I do not agree with you.

It is perfectly legal to use read-only protection to implement
things like efficient garbage collection scans.

It's not even write exceptions, what about the pointer being
valid at all?

Memory accesses really are special.  You can only execute them when
the program would have allowed them to occur, otherwise you risk
taking exceptions.

Do you really think that:

	the_pointer_is_valid = func(potentially_bad_pointer);
	if (the_pointer_is_valid)
		*potentially_bad_pointer++;

should generate any memory accesses when 'the_pointer_is_valid'
evaluates to false?

And yet this is just another form of our original "threading" example:

	if (pthread_mutex_trylock(lock))
		*counter++;

It shows that memory accesses are a fundamental issue.

Only if you can prove that the program would access said memory with
said kind of access (read or write) can you legally speculate.

Happily it seems that for the cases where it helps code generation
substantially, this precondition is true.

  reply	other threads:[~2007-10-29  3:32 UTC|newest]

Thread overview: 206+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <e2e108260710260541n61462585u99de9bc0617720f4@mail.gmail.com>
2007-10-26 13:45 ` Bart Van Assche
2007-10-26 14:38   ` Tomash Brechko
2007-10-26 15:50     ` Ian Lance Taylor
2007-10-26 15:51       ` Tomash Brechko
2007-10-26 16:04         ` Dave Korn
2007-10-26 16:18           ` Tomash Brechko
2007-10-26 17:06             ` Michael Matz
2007-10-26 17:54               ` Tomash Brechko
2007-10-26 17:55                 ` Tomash Brechko
2007-10-28 17:08                   ` Michael Matz
2007-10-28 18:06                     ` Tomash Brechko
2007-10-28 18:43                       ` Tomash Brechko
2007-10-29  1:29                       ` Dave Korn
2007-10-29  2:05                         ` David Miller
2007-10-29  2:54                           ` Dave Korn
2007-10-29  3:04                             ` David Miller
2007-10-29  3:08                             ` David Miller
2007-10-29  4:35                             ` Mark Mielke
2007-10-29  8:03                             ` Tomash Brechko
2007-10-29  8:08                               ` Tomash Brechko
2007-10-29  8:11                                 ` Andrew Pinski
2007-10-29  8:22                                   ` Tomash Brechko
2007-10-29  8:21                                 ` Eric Botcazou
2007-10-29  8:30                                   ` Tomash Brechko
2007-10-29  8:42                                     ` Eric Botcazou
2007-10-29  8:44                                       ` Tomash Brechko
2007-10-29  8:49                                         ` Tomash Brechko
2007-10-29  8:55                                           ` Eric Botcazou
2007-10-29  9:04                                             ` Tomash Brechko
2007-10-29  9:12                                               ` Tomash Brechko
2007-10-29  9:35                                                 ` Tomash Brechko
2007-10-29 22:04                                               ` Eric Botcazou
2007-10-30  7:48                                                 ` Tomash Brechko
2007-10-30  7:55                                                   ` Tomash Brechko
2007-10-30  7:59                                                   ` Eric Botcazou
2007-10-30  8:03                                                     ` Tomash Brechko
2007-10-30  8:20                                                       ` Tomash Brechko
2007-10-30  8:29                                                         ` Eric Botcazou
2007-10-30  9:04                                                           ` Tomash Brechko
2007-10-30 14:48                                                             ` Eric Botcazou
2007-10-30 15:27                                                               ` Tomash Brechko
2007-10-31  2:21                                                                 ` Eric Botcazou
2007-10-29  3:32                           ` skaller
2007-10-29  4:32                             ` David Miller [this message]
2007-10-29  4:54                               ` skaller
2007-10-29 15:14                               ` Michael Matz
2007-10-29  5:08                           ` Darryl Miles
2007-10-29  7:43                             ` David Miller
2007-10-29 12:08                               ` Darryl Miles
2007-10-29 12:14                                 ` Robert Dewar
2007-10-29 17:04                                 ` skaller
2007-10-29 16:47                               ` Joe Buck
2007-10-29 15:00                           ` Michael Matz
2007-10-29 16:20                             ` Tomash Brechko
2007-10-29 16:32                               ` Tomash Brechko
2007-10-29 19:43                               ` Duncan Sands
2007-10-29 20:03                                 ` Jack Lloyd
2007-10-29 20:52                                 ` Tomash Brechko
2007-10-29 20:59                                   ` Michael Matz
2007-10-29 21:14                                     ` Tomash Brechko
2007-10-26 21:29               ` Ian Lance Taylor
2007-10-26 21:39                 ` Diego Novillo
2007-10-26 22:38                   ` Ian Lance Taylor
2007-10-26 22:46                     ` Jonathan Wakely
2007-10-26 22:56                     ` Diego Novillo
2007-10-31 22:43                     ` Jason Merrill
2007-10-31 22:50                       ` Jason Merrill
2007-10-26 21:53                 ` Daniel Jacobowitz
2007-10-26 22:20                 ` Jakub Jelinek
2007-10-26 22:55                   ` Ian Lance Taylor
2007-10-27  0:17                 ` skaller
2007-10-27  0:26                   ` David Daney
2007-10-27  0:36                     ` Robert Dewar
2007-10-27  1:29                     ` skaller
2007-10-27 12:51                   ` Andrew Haley
2007-10-26 22:57               ` David Miller
2007-10-28 17:10                 ` Michael Matz
2007-10-29  1:01                   ` David Miller
2007-10-29  2:23                     ` Mark Mielke
2007-10-29 15:09                       ` Michael Matz
2007-10-29 15:16                         ` Darryl Miles
2007-10-29 15:24                           ` Michael Matz
2007-10-29 15:40                             ` Darryl Miles
2007-10-29 15:16                         ` Mark Mielke
2007-10-30 10:28                         ` Tomash Brechko
2007-10-30 14:50                           ` Ian Lance Taylor
2007-10-30 16:17                             ` Tomash Brechko
2007-10-30 17:05                               ` Ian Lance Taylor
2007-10-30 22:01                                 ` Tomash Brechko
2007-10-29  1:05                   ` David Miller
2007-10-29  1:16                     ` Dave Korn
2007-10-29  1:37                       ` David Miller
2007-10-29  3:22                         ` skaller
2007-10-29 11:54                         ` Robert Dewar
2007-10-29 15:21                           ` Michael Matz
2007-10-29 15:34                             ` Robert Dewar
2007-10-29 15:35                               ` Michael Matz
2007-10-29 15:40                                 ` Robert Dewar
2007-10-29 16:29                         ` Joe Buck
2007-10-29 16:53                           ` Robert Dewar
2007-10-26 17:10             ` skaller
2007-10-26 19:11               ` Tomash Brechko
2007-10-26 23:34                 ` skaller
2007-10-27 10:54                   ` Tomash Brechko
2007-10-26 15:24   ` Ian Lance Taylor
     [not found] <Pine.LNX.4.64.0710281753210.23011@wotan.suse.de.suse.lists.egcs>
     [not found] ` <20071028.180108.71876074.davem@davemloft.net.suse.lists.egcs>
     [not found]   ` <02e701c819c7$be985620$2e08a8c0@CAM.ARTIMI.COM.suse.lists.egcs>
     [not found]     ` <20071028.183401.197068473.davem@davemloft.net.suse.lists.egcs>
     [not found]       ` <20071029162032.GA10611@synopsys.com.suse.lists.egcs>
     [not found]         ` <47260E97.4020309@adacore.com.suse.lists.egcs>
2007-10-29 19:51           ` Andi Kleen
2007-10-29 20:00             ` Robert Dewar
2007-10-29 20:10               ` Andi Kleen
2007-10-29 20:19                 ` Robert Dewar
2007-10-29 21:29                 ` skaller
2007-10-29 22:07                   ` Robert Dewar
2007-10-30  1:40                     ` Robert Dewar
2007-10-30  6:37                       ` Eric Botcazou
     [not found] <e2e108260710260634q7a291337s6e66dfa25f28b68a@mail.gmail.com.suse.lists.egcs>
     [not found] ` <e2e108260710260705s170a7c82udb0c9db26a408d84@mail.gmail.com.suse.lists.egcs>
     [not found]   ` <18210.795.425145.46885@zebedee.pink.suse.lists.egcs>
     [not found]     ` <e2e108260710270510j56fe188dkabe070f4c6bcbe0a@mail.gmail.com.suse.lists.egcs>
     [not found]       ` <87hckcpvp5.fsf@mid.deneb.enyo.de.suse.lists.egcs>
     [not found]         ` <e2e108260710270607u6798af5em6467bd38788f48cd@mail.gmail.com.suse.lists.egcs>
     [not found]           ` <87abq4ofym.fsf@mid.deneb.enyo.de.suse.lists.egcs>
     [not found]             ` <e2e108260710280631i405e4fd8te51ff7aa2ebece23@mail.gmail.com.suse.lists.egcs>
     [not found]               ` <472492F8.90700@adacore.com.suse.lists.egcs>
     [not found]                 ` <20071028141821.GA4898@moonlight.home.suse.lists.egcs>
2007-10-29 11:57                   ` Andi Kleen
2007-10-29 12:18                     ` Tomash Brechko
2007-10-29 14:12                       ` Andi Kleen
     [not found] <e2e108260710260541n61462585u99de9bc0617720f4@mail.gmail.com.suse.lists.egcs>
     [not found] ` <e2e108260710260620k2a2e21b3t1d6c052f14d36094@mail.gmail.com.suse.lists.egcs>
     [not found]   ` <20071026143334.GA5041@moonlight.home.suse.lists.egcs>
     [not found]     ` <m38x5pj3ig.fsf@localhost.localdomain.suse.lists.egcs>
     [not found]       ` <20071026155101.GB5041@moonlight.home.suse.lists.egcs>
     [not found]         ` <016201c817e9$5454edd0$2e08a8c0@CAM.ARTIMI.COM.suse.lists.egcs>
     [not found]           ` <20071026161739.GC5041@moonlight.home.suse.lists.egcs>
     [not found]             ` <Pine.LNX.4.64.0710261836440.23011@wotan.suse.de.suse.lists.egcs>
     [not found]               ` <m33avxfu2i.fsf@localhost.localdomain.suse.lists.egcs>
2007-10-27 17:08                 ` Andi Kleen
2007-10-27 18:24                   ` Ian Lance Taylor
     [not found] <e2e108260710260634q7a291337s6e66dfa25f28b68a@mail.gmail.com>
2007-10-26 14:11 ` Bart Van Assche
2007-10-26 15:14   ` Andrew Haley
2007-10-26 15:18     ` Robert Dewar
2007-10-26 15:27       ` Dave Korn
2007-10-26 16:28         ` skaller
2007-10-26 16:38           ` Michael Matz
2007-10-26 17:04         ` Richard Kenner
2007-10-26 16:00       ` Samuel Tardieu
2007-10-26 17:03         ` Samuel Tardieu
2007-10-27  9:33         ` Robert Dewar
2007-10-27 13:49           ` Florian Weimer
2007-10-27 13:59             ` Samuel Tardieu
2007-10-27 14:25               ` Florian Weimer
2007-10-27 19:35                 ` Andrew Haley
2007-10-27 16:25             ` Robert Dewar
2007-10-27 16:43               ` Samuel Tardieu
2007-10-27 12:47     ` Bart Van Assche
2007-10-27 13:07       ` Florian Weimer
2007-10-27 13:16         ` Bart Van Assche
2007-10-27 13:16           ` Andrew Haley
2007-10-27 13:34           ` Florian Weimer
2007-10-28 13:47             ` Bart Van Assche
2007-10-28 13:53               ` Robert Dewar
2007-10-28 15:03                 ` Tomash Brechko
2007-10-28 21:19                 ` Bart Van Assche
2007-10-29  3:19                   ` skaller
2007-10-28 14:18               ` Andrew Haley
2007-10-28 15:07               ` Dave Korn
2007-10-28 17:29                 ` Erik Trulsson
2007-10-28 17:26                   ` Robert Dewar
2007-10-28 17:49                     ` Erik Trulsson
2007-10-28 18:02                       ` Andreas Schwab
2007-10-28 18:40                       ` Dave Korn
2007-10-28 19:15                         ` Erik Trulsson
2007-10-28 20:43                           ` skaller
2007-10-29  5:17                           ` Ross Smith
2007-10-28 17:39                   ` Richard Guenther
2007-10-28 18:03                     ` Erik Trulsson
2007-10-28 20:12                     ` skaller
2007-10-28 23:04                       ` Richard Guenther
2007-10-29  2:39                         ` skaller
2007-10-29  9:52                           ` Samuel Tardieu
2007-10-29 11:24                             ` skaller
2007-10-29 13:57                               ` Darryl Miles
2007-10-29  9:57                     ` Andrew Haley
2007-10-26 16:08   ` skaller
     [not found] <20071022093617.GA5073@moonlight.home.suse.lists.egcs>
     [not found] ` <18204.31027.183382.838763@zebedee.pink.suse.lists.egcs>
     [not found]   ` <20071022105044.GB5073@moonlight.home.suse.lists.egcs>
     [not found]     ` <011501c8149b$b7156c20$2e08a8c0@CAM.ARTIMI.COM.suse.lists.egcs>
     [not found]       ` <20071022111704.GE5073@moonlight.home.suse.lists.egcs>
     [not found]         ` <011601c8149d$7050bea0$2e08a8c0@CAM.ARTIMI.COM.suse.lists.egcs>
     [not found]           ` <20071022112643.GG5073@moonlight.home.suse.lists.egcs>
     [not found]             ` <012501c814b2$f4623470$2e08a8c0@CAM.ARTIMI.COM.suse.lists.egcs>
     [not found]               ` <20071022143215.GH5073@moonlight.home.suse.lists.egcs>
     [not found]                 ` <Pine.LNX.4.64.0710221757450.23011@wotan.suse.de.suse.lists.egcs>
     [not found]                   ` <20071022171757.GI5073@moonlight.home.suse.lists.egcs>
     [not found]                     ` <18204.57073.943880.741269@zebedee.pink.suse.lists.egcs>
2007-10-22 18:11                       ` Andi Kleen
2007-10-21 14:55 Tomash Brechko
2007-10-21 15:26 ` Erik Trulsson
2007-10-21 16:16   ` Tomash Brechko
2007-10-21 18:51     ` Richard Guenther
2007-10-22  1:16     ` skaller
2007-10-21 23:07 ` Dave Korn
2007-10-22  1:25   ` skaller
2007-10-22 10:32     ` Dave Korn
2007-10-22  9:36   ` Tomash Brechko
2007-10-22 10:09     ` Erik Trulsson
2007-10-22 10:15       ` Robert Dewar
2007-10-23 16:53         ` Paul Brook
2007-10-22 17:59       ` skaller
2007-10-22 10:19     ` Andrew Haley
2007-10-22 10:50       ` Tomash Brechko
2007-10-22 10:54         ` Dave Korn
2007-10-22 11:10           ` Tomash Brechko
2007-10-22 11:00         ` Tomash Brechko
2007-10-22 11:07         ` Dave Korn
2007-10-22 11:17           ` Tomash Brechko
2007-10-22 11:19             ` Dave Korn
2007-10-22 11:26               ` Tomash Brechko
2007-10-22 13:53                 ` Dave Korn
2007-10-22 14:32                   ` Tomash Brechko
2007-10-22 16:15                     ` Michael Matz
2007-10-22 16:22                       ` Dave Korn
2007-10-22 17:18                       ` Tomash Brechko
2007-10-22 17:33                         ` Andrew Haley
2007-10-22 17:44                           ` Tomash Brechko
2007-10-22 17:48                             ` Andrew Haley
2007-10-22 18:00                               ` Tomash Brechko
2007-10-23  9:45                                 ` Andrew Haley
2007-10-22 17:51                           ` Dave Korn
2007-10-22 18:15                     ` skaller
2007-10-22 18:26                       ` Andrew Pinski
2007-10-22 11:08         ` Andrew Haley
2007-10-22 11:21           ` Tomash Brechko
2007-10-26 21:24       ` Florian Weimer
2007-10-27 18:15 ` Darryl Miles
2007-10-27 21:35   ` Dave Korn
2007-10-27 22:58     ` Darryl Miles

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=20071028.203246.31471717.davem@davemloft.net \
    --to=davem@davemloft.net \
    --cc=dave.korn@artimi.com \
    --cc=gcc@gcc.gnu.org \
    --cc=matz@suse.de \
    --cc=skaller@users.sourceforge.net \
    --cc=tomash.brechko@gmail.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 read-only IMAP folder(s) and NNTP newsgroup(s).