diff options
author | Andres Freund <andres@anarazel.de> | 2020-06-08 15:25:49 -0700 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2020-06-17 12:51:12 -0700 |
commit | b91cfaa34f44386786c64bbf80d296b84ecc811e (patch) | |
tree | 744a5d396f84789d8760de7cf3035572b0539071 /src | |
parent | dab8561cded852179a3f5fd87c8f31416d5cfdaf (diff) | |
download | postgresql-b91cfaa34f44386786c64bbf80d296b84ecc811e.tar.gz postgresql-b91cfaa34f44386786c64bbf80d296b84ecc811e.zip |
spinlock emulation: Fix bug when more than INT_MAX spinlocks are initialized.
Once the counter goes negative we ended up with spinlocks that errored
out on first use (due to check in tas_sema).
Author: Andres Freund
Reviewed-By: Robert Haas
Discussion: https://postgr.es/m/20200606023103.avzrctgv7476xj7i@alap3.anarazel.de
Backpatch: 9.5-
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/storage/lmgr/spin.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/storage/lmgr/spin.c b/src/backend/storage/lmgr/spin.c index d0c431b97d5..f44e5e2b37b 100644 --- a/src/backend/storage/lmgr/spin.c +++ b/src/backend/storage/lmgr/spin.c @@ -106,7 +106,7 @@ SpinlockSemaInit(void) void s_init_lock_sema(volatile slock_t *lock, bool nested) { - static int counter = 0; + static uint32 counter = 0; *lock = ((++counter) % NUM_SPINLOCK_SEMAPHORES) + 1; } |