Re: Is gcc thread-unsafe?

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Andi Kleen <ak@...>
Cc: Linus Torvalds <torvalds@...>, Nick Piggin <nickpiggin@...>, Linux Kernel Mailing List <linux-kernel@...>
Date: Friday, October 26, 2007 - 12:57 am

On Fri, Oct 26, 2007 at 01:42:37AM +0200, Andi Kleen wrote:

While this is OK in mono-threaded code, it introduces a race condition in
multi-threaded code. The code above tried to acquire a lock, and eax was
set to 1 if it succeeded. And whatever the result, all threads still
happily modify the shared memory area (acquires_count). So the classical
case where two threads perform the same operation at the same time ends
up with a random value in acquires_count.


Even with a CMOV, it's the memory write which should not be performed
if the lock was not acquired.

(...)

100% agree.

What would really be needed is an attribute around conditions to
indicate whether they *may* be optimized or not. Something similar
to the likely/unlikely we currently use, we could have something
like __attribute__((unsafe_cond(cond))). I think that it could still
optimize by default but let the user explicitly state that he is
playing with thread-unsafe code. As you pointed out, you did not
find any such mis-optimization in the kernel, which means that it
does not hit too often. That's the reason why I'd let the user be
careful.

Willy

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Is gcc thread-unsafe?, Nick Piggin, (Wed Oct 24, 11:24 pm)
Re: Is gcc thread-unsafe?, Phillip Susi, (Wed Oct 31, 6:10 pm)
Re: Is gcc thread-unsafe?, Linus Torvalds, (Thu Oct 25, 10:55 am)
Re: Is gcc thread-unsafe?, Ismail , (Thu Oct 25, 6:26 pm)
Re: Is gcc thread-unsafe?, Jeff Garzik, (Thu Oct 25, 6:56 pm)
Re: Is gcc thread-unsafe?, Jeff Garzik, (Thu Oct 25, 7:04 pm)
RE: Is gcc thread-unsafe?, David Schwartz, (Thu Oct 25, 5:42 pm)
Re: Is gcc thread-unsafe?, Nick Piggin, (Thu Oct 25, 7:22 pm)
Re: Is gcc thread-unsafe?, Andrew Haley, (Fri Oct 26, 7:59 am)
Re: Is gcc thread-unsafe?, Andrew Haley, (Fri Oct 26, 7:59 am)
Re: Is gcc thread-unsafe?, Chris Friesen, (Fri Oct 26, 1:39 pm)
Re: Is gcc thread-unsafe?, Pekka Enberg, (Thu Oct 25, 11:12 am)
Re: Is gcc thread-unsafe?, Andi Kleen, (Thu Oct 25, 3:15 am)
Re: Is gcc thread-unsafe?, Nick Piggin, (Thu Oct 25, 6:49 pm)
Re: Is gcc thread-unsafe?, Andi Kleen, (Thu Oct 25, 7:09 pm)
Re: Is gcc thread-unsafe?, Nick Piggin, (Thu Oct 25, 7:43 pm)
Re: Is gcc thread-unsafe?, Andi Kleen, (Thu Oct 25, 7:55 pm)
Re: Is gcc thread-unsafe?, Nick Piggin, (Thu Oct 25, 7:57 pm)
Re: Is gcc thread-unsafe?, Linus Torvalds, (Thu Oct 25, 7:14 pm)
Re: Is gcc thread-unsafe?, Andi Kleen, (Thu Oct 25, 7:16 pm)
Re: Is gcc thread-unsafe?, Linus Torvalds, (Thu Oct 25, 7:32 pm)
Re: Is gcc thread-unsafe?, Andi Kleen, (Thu Oct 25, 7:42 pm)
Re: Is gcc thread-unsafe?, Willy Tarreau, (Fri Oct 26, 12:57 am)
Re: Is gcc thread-unsafe?, Linus Torvalds, (Thu Oct 25, 7:57 pm)
Re: Is gcc thread-unsafe?, Zachary Amsden, (Thu Oct 25, 9:15 pm)
Re: Is gcc thread-unsafe?, linux-os (Dick Johnson), (Thu Oct 25, 7:58 am)
Re: Is gcc thread-unsafe?, Andi Kleen, (Thu Oct 25, 8:16 am)
Re: Is gcc thread-unsafe?, Arjan van de Ven, (Wed Oct 24, 11:46 pm)
Re: Is gcc thread-unsafe?, Nick Piggin, (Wed Oct 24, 11:58 pm)
RE: Is gcc thread-unsafe?, David Schwartz, (Thu Oct 25, 12:29 am)
Re: Is gcc thread-unsafe?, Nick Piggin, (Thu Oct 25, 12:47 am)
Re: Is gcc thread-unsafe?, Samuel Tardieu, (Thu Oct 25, 5:44 am)
Re: Is gcc thread-unsafe?, Andi Kleen, (Thu Oct 25, 5:55 am)
Re: Is gcc thread-unsafe?, Arjan van de Ven, (Thu Oct 25, 12:35 am)