]> 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:12:11 +0000 (14:12 -0700)
commit3e69bf3b142be3f4205435ef3baabcae168c6a14
tree652438d91f99a7230f38394bd1dc13148fd1415f
parent7e91f90a8ed4af18f4d2a3cb1b657b4296e2e710
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