Andres Freund <andres(at)anarazel(dot)de> writes:
> Hm. After a long battle of head vs. wall I think I see what the problem
> is. For the fallback atomics implementation I somehow had assumed that
> pg_atomic_write_u32() doesn't need to lock, as it's just an unlocked
> write. But that's not true, because it has to cause
> pg_atomic_compare_exchange_u32 to fail.
Hah ... obvious once you see it.
> For me the problem often takes a lot longer to reproduce (once only
> after 40min), could you run with the attached patch, and see whether
> that fixes things for you?
For me, with the described test case, HEAD fails within a minute,
two times out of three or so. I've not reproduced it after half an
hour of beating on this patch. Looks good.
regards, tom lane