]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix deadlock danger when atomic ops are done under spinlock.
authorAndres Freund <andres@anarazel.de>
Mon, 8 Jun 2020 23:50:37 +0000 (16:50 -0700)
committerAndres Freund <andres@anarazel.de>
Thu, 18 Jun 2020 21:13:06 +0000 (14:13 -0700)
commit6cc2866c4cdf6a167be1ed9cb0fff9fce55758d6
tree0b0af19a381ff2d95e9217928612ccabbdb19407
parent008c119928a3eec4e55560562d872117e08f6df3
Fix deadlock danger when atomic ops are done under spinlock.

This was a danger only for --disable-spinlocks in combination with
atomic operations unsupported by the current platform.

While atomics.c was careful to signal that a separate semaphore ought
to be used when spinlock emulation is active, spin.c didn't actually
implement that mechanism. That's my (Andres') fault, it seems to have
gotten lost during the development of the atomic operations support.

Fix that issue and add test for nesting atomic operations inside a
spinlock.

Author: Andres Freund
Discussion: https://postgr.es/m/20200605023302.g6v3ydozy5txifji@alap3.anarazel.de
Backpatch: 9.5-
src/backend/storage/lmgr/spin.c
src/test/regress/regress.c