mirror of
https://github.com/postgres/postgres.git
synced 2025-05-11 05:41:32 +03:00
Fix the initialization of atomic variable introduced by the
group clearing mechanism. Commit 0e141c0fbb introduced initialization of atomic variable in InitProcess which means that it's not safe to look at it for backends that aren't currently in use. Fix that by initializing the same during postmaster startup. Reported-by: Andres Freund Author: Amit Kapila Backpatch-through: 9.6 Discussion: https://postgr.es/m/20181027104138.qmbbelopvy7cw2qv@alap3.anarazel.de
This commit is contained in:
parent
fe66fc6f94
commit
1a8bde490c
@ -268,6 +268,12 @@ InitProcGlobal(void)
|
||||
|
||||
/* Initialize lockGroupMembers list. */
|
||||
dlist_init(&procs[i].lockGroupMembers);
|
||||
|
||||
/*
|
||||
* Initialize the atomic variable, otherwise, it won't be safe to
|
||||
* access it for backends that aren't currently in use.
|
||||
*/
|
||||
pg_atomic_init_u32(&(procs[i].procArrayGroupNext), INVALID_PGPROCNO);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -401,7 +407,7 @@ InitProcess(void)
|
||||
/* Initialize fields for group XID clearing. */
|
||||
MyProc->procArrayGroupMember = false;
|
||||
MyProc->procArrayGroupMemberXid = InvalidTransactionId;
|
||||
pg_atomic_init_u32(&MyProc->procArrayGroupNext, INVALID_PGPROCNO);
|
||||
Assert(pg_atomic_read_u32(&MyProc->procArrayGroupNext) == INVALID_PGPROCNO);
|
||||
|
||||
/* Check that group locking fields are in a proper initial state. */
|
||||
Assert(MyProc->lockGroupLeader == NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user