mirror of
https://github.com/postgres/postgres.git
synced 2025-05-03 22:24:49 +03:00
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-
This commit is contained in:
parent
5771d8b690
commit
6606220534
@ -97,7 +97,7 @@ SpinlockSemaInit(PGSemaphore spinsemas)
|
|||||||
void
|
void
|
||||||
s_init_lock_sema(volatile slock_t *lock, bool nested)
|
s_init_lock_sema(volatile slock_t *lock, bool nested)
|
||||||
{
|
{
|
||||||
static int counter = 0;
|
static uint32 counter = 0;
|
||||||
|
|
||||||
*lock = ((++counter) % NUM_SPINLOCK_SEMAPHORES) + 1;
|
*lock = ((++counter) % NUM_SPINLOCK_SEMAPHORES) + 1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user