pgsql: Fix deadlock danger when atomic ops are done under spinlock. - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: Fix deadlock danger when atomic ops are done under spinlock.
Date
Msg-id E1jm2Cj-0006V5-U8@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
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-

Branch
------
REL_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/5fffa8fce37b981e1a5bb79affce9a856e021265

Modified Files
--------------
src/backend/storage/lmgr/spin.c | 97 ++++++++++++++++++++++++++++-------------
src/test/regress/regress.c      | 52 ++++++++++++++++++++++
2 files changed, 119 insertions(+), 30 deletions(-)


pgsql-committers by date:

Previous
From: Andres Freund
Date:
Subject: pgsql: Add basic spinlock tests to regression tests.
Next
From: Andres Freund
Date:
Subject: pgsql: Add basic spinlock tests to regression tests.