diff options
author | Andres Freund | 2020-06-08 22:25:49 +0000 |
---|---|---|
committer | Andres Freund | 2020-06-17 19:50:54 +0000 |
commit | 4d4ca24efe8ebda9547337f47dcb61d3163be765 (patch) | |
tree | 17121b6f45921655c6cce22694733a4a9db40f50 | |
parent | fd49d53807575e009f7b66771d48c9356344d7d1 (diff) |
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/[email protected]
Backpatch: 9.5-
-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 4d2a4c6641..753943e46d 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; } |