*** ./src/backend/storage/lmgr/proc.c.orig	2013-02-04 22:28:27.000000000 +0100
--- ./src/backend/storage/lmgr/proc.c	2013-03-15 14:40:33.044812917 +0100
***************
*** 158,164 ****
  InitProcGlobal(void)
  {
  	PGPROC	   *procs;
! 	int			i;
  	bool		found;
  
  	/* Create the ProcGlobal shared structure */
--- 158,165 ----
  InitProcGlobal(void)
  {
  	PGPROC	   *procs;
! 	int			i,
! 				 j;
  	bool		found;
  
  	/* Create the ProcGlobal shared structure */
***************
*** 202,207 ****
--- 203,211 ----
  		InitSharedLatch(&procs[i].procLatch);
  		procs[i].links.next = (SHM_QUEUE *) ProcGlobal->freeProcs;
  		ProcGlobal->freeProcs = &procs[i];
+ 
+ 		for (j = 0; j < NUM_LOCK_PARTITIONS; j++)
+ 			SHMQueueInit(&(procs[i].myProcLocks[j]));
  	}
  
  	/*
***************
*** 221,226 ****
--- 225,233 ----
  		InitSharedLatch(&procs[i].procLatch);
  		procs[i].links.next = (SHM_QUEUE *) ProcGlobal->autovacFreeProcs;
  		ProcGlobal->autovacFreeProcs = &procs[i];
+ 
+ 		for (j = 0; j < NUM_LOCK_PARTITIONS; j++)
+ 			SHMQueueInit(&(procs[i].myProcLocks[j]));
  	}
  
  	/*
***************
*** 232,237 ****
--- 239,247 ----
  		AuxiliaryProcs[i].pid = 0;		/* marks auxiliary proc as not in use */
  		PGSemaphoreCreate(&(AuxiliaryProcs[i].sem));
  		InitSharedLatch(&AuxiliaryProcs[i].procLatch);
+ 
+ 		for (j = 0; j < NUM_LOCK_PARTITIONS; j++)
+ 			SHMQueueInit(&(procs[i].myProcLocks[j]));
  	}
  
  	/* Create ProcStructLock spinlock, too */
***************
*** 247,253 ****
  {
  	/* use volatile pointer to prevent code rearrangement */
  	volatile PROC_HDR *procglobal = ProcGlobal;
- 	int			i;
  
  	/*
  	 * ProcGlobal should be set up already (if we are a backend, we inherit
--- 257,262 ----
***************
*** 337,344 ****
  	MyProc->lwWaitLink = NULL;
  	MyProc->waitLock = NULL;
  	MyProc->waitProcLock = NULL;
- 	for (i = 0; i < NUM_LOCK_PARTITIONS; i++)
- 		SHMQueueInit(&(MyProc->myProcLocks[i]));
  	MyProc->recoveryConflictPending = false;
  
  	/* Initialize fields for sync rep */
--- 346,351 ----
