diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index e6075dafe9..7fef120726 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -462,6 +462,7 @@ static void
 ProcArrayShmemAttach(void *arg)
 {
 	allProcs = ProcGlobal->allProcs;
+	pgxactoffs = ProcGlobal->pgxactoffs;
 }
 
 /*
diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c
index e64ab6e597..be0ca07161 100644
--- a/src/backend/storage/lmgr/proc.c
+++ b/src/backend/storage/lmgr/proc.c
@@ -269,12 +269,12 @@ ProcGlobalShmemInit(void *arg)
 	ProcGlobal->xids = (TransactionId *) ptr;
 	ptr = ptr + (TotalProcs * sizeof(*ProcGlobal->xids));
 
+	ProcGlobal->pgxactoffs = (int *) ptr;
+	ptr = ptr + (TotalProcs * sizeof(*ProcGlobal->pgxactoffs));
+
 	ProcGlobal->subxidStates = (XidCacheStatus *) ptr;
 	ptr = ptr + (TotalProcs * sizeof(*ProcGlobal->subxidStates));
 
-	ProcGlobal->pgxactoffs = (int *) ptr;
-	ptr = (char *) ptr + TotalProcs * sizeof(*ProcGlobal->pgxactoffs);
-
 	ProcGlobal->statusFlags = (uint8 *) ptr;
 	ptr = ptr + (TotalProcs * sizeof(*ProcGlobal->statusFlags));
 
