git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: dab8561)
spinlock emulation: Fix bug when more than INT_MAX spinlocks are initialized.
Mon, 8 Jun 2020 22:25:49 +0000 (15:25 -0700)
2020年6月17日 19:51:12 +0000 (12:51 -0700)
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-


diff --git a/src/backend/storage/lmgr/spin.c b/src/backend/storage/lmgr/spin.c
index d0c431b97d54916adcb25163fd1689a325ab229a..f44e5e2b37be6f8179237cb6805821171d9469f9 100644 (file)
--- 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;
}
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /