Re: [HACKERS] Yes, WaitLatch is vulnerable to weak-memory-ordering bugs

2011-08-08 Thread Heikki Linnakangas
On 08.08.2011 19:39, Tom Lane wrote: Robert Haas writes: On the flip side, I'm not sure that anyone ever really expected that a latch could be safely used this way. Normally, I'd expect the flag to be some piece of state protected by an LWLock, and I think that ought to be OK provided that the

Re: [HACKERS] Yes, WaitLatch is vulnerable to weak-memory-ordering bugs

2011-08-08 Thread Tom Lane
Robert Haas writes: > On Sun, Aug 7, 2011 at 1:47 PM, Tom Lane wrote: >> Any protocol of that sort has *obviously* got a race condition between >> changes of the latch state and changes of the separate flag state, if run >> in a weak-memory-ordering machine. > On the flip side, I'm not sure that

Re: [HACKERS] Yes, WaitLatch is vulnerable to weak-memory-ordering bugs

2011-08-08 Thread Robert Haas
On Mon, Aug 8, 2011 at 11:28 AM, Peter Geoghegan wrote: >> Maybe we should try to document the contract here >> a little better; I think it's just that there must be a full memory >> barrier (such as LWLockRelease) in both processes involved in the >> interaction. > > Or, maybe we should think abo

Re: [HACKERS] Yes, WaitLatch is vulnerable to weak-memory-ordering bugs

2011-08-08 Thread Peter Geoghegan
On 8 August 2011 13:47, Robert Haas wrote: > On the flip side, I'm not sure that anyone ever really expected that a > latch could be safely used this way.  Normally, I'd expect the flag to > be some piece of state protected by an LWLock, and I think that ought > to be OK provided that the lwlock i

Re: [HACKERS] Yes, WaitLatch is vulnerable to weak-memory-ordering bugs

2011-08-08 Thread Robert Haas
On Sun, Aug 7, 2011 at 1:47 PM, Tom Lane wrote: > Any protocol of that sort has *obviously* got a race condition between > changes of the latch state and changes of the separate flag state, if run > in a weak-memory-ordering machine. > > At least on the hardware I'm testing, it seems that the key

[HACKERS] Yes, WaitLatch is vulnerable to weak-memory-ordering bugs

2011-08-07 Thread Tom Lane
I suspected $SUBJECT from the beginning, and I've now put in enough work to be able to prove it. The attached test program reliably fails within a few minutes of being started, when run with 8 worker processes on an 8-core PPC machine. It's a pretty simple "token passing ring" protocol, and at so