postgres.git / summary / log / commit / refs

commit    f6661d3df228dbbf50efb04f2b760774a6f2bfff
Author:   Andres Freund <andres@anarazel.de>
Date:     Sun Aug 16 21:21:37 2020 +0000
First released in: 14.0

    Fix use of wrong index in ComputeXidHorizons().
    
    This bug, recently introduced in 941697c3c1a, at least lead to vacuum
    failing because it found tuples inserted by a running transaction, but
    below the freeze limit. The freeze limit in turn is directly affected
    by the aforementioned bug.
    
    Thanks to Tom Lane figuring how to make the bug reproducible.
    
    We should add a few more assertions to make sure this type of bug
    isn't as hard to notice, but it's not yet clear how to best do so.
    
    Co-Diagnosed-By: Tom Lane <tgl@sss.pgh.pa.us>
    Author: Andres Freund <andres@anarazel.de>
    Discussion: https://postgr.es/m/1013484.1597609043@sss.pgh.pa.us


src/backend/storage/ipc/procarray.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index 8262abd42e6..96e4a878576 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -1663,7 +1663,7 @@ ComputeXidHorizons(ComputeXidHorizonsResult *h) TransactionId xmin; /* Fetch xid just once - see GetNewTransactionId */ - xid = UINT32_ACCESS_ONCE(other_xids[pgprocno]); + xid = UINT32_ACCESS_ONCE(other_xids[index]); xmin = UINT32_ACCESS_ONCE(proc->xmin); /* [parent: 49967da65aec]