pgsql: Fix deadlock danger when atomic ops are done under spinlock.

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix deadlock danger when atomic ops are done under spinlock.
Date: 2020-06-18 21:36:27
Message-ID: E1jm2Cx-0006XL-NA@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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
------
REL9_6_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/8bc13287ed3e1856c9b8892df98683298d2f0cec

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

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2020-06-18 21:36:31 pgsql: Fix deadlock danger when atomic ops are done under spinlock.
Previous Message Andres Freund 2020-06-18 21:36:24 pgsql: Fix deadlock danger when atomic ops are done under spinlock.