postgres.git / summary / log / commit / refs

commit    dcf3cb60cbefe6f752c8a1aac5e24d869fd5c52c
Author:   Andres Freund <andres@anarazel.de>
Date:     Mon Jun 08 22:25:49 2020 +0000
First released in: 14.0, 9.5.23, 9.6.19, 10.14, 11.9, 12.4, 13.0

    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-


src/backend/storage/lmgr/spin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/storage/lmgr/spin.c b/src/backend/storage/lmgr/spin.c index 1ca718bfd9c..dfa47a723fa 100644 --- a/src/backend/storage/lmgr/spin.c +++ b/src/backend/storage/lmgr/spin.c @@ -91,7 +91,7 @@ SpinlockSemaInit(PGSemaphore spinsemas) void s_init_lock_sema(volatile slock_t *lock, bool nested) { - static int counter = 0; + static uint32 counter = 0; *lock = (++counter) % NUM_SPINLOCK_SEMAPHORES; } [parent: 4f01103d647b]