Index: src/backend/storage/ipc/procarray.c
===================================================================
RCS file: /home/sriggs/pg/REPOSITORY/pgsql/src/backend/storage/ipc/procarray.c,v
retrieving revision 1.47
diff -c -r1.47 procarray.c
*** src/backend/storage/ipc/procarray.c	1 Jan 2009 17:23:47 -0000	1.47
--- src/backend/storage/ipc/procarray.c	16 Jan 2009 16:39:23 -0000
***************
*** 1023,1030 ****
   *
   * The array is palloc'd and is terminated with an invalid VXID.
   *
!  * If limitXmin is not InvalidTransactionId, we skip any backends
!  * with xmin >= limitXmin.	If allDbs is false, we skip backends attached
   * to other databases.  If excludeVacuum isn't zero, we skip processes for
   * which (excludeVacuum & vacuumFlags) is not zero.  Also, our own process
   * is always skipped.
--- 1023,1030 ----
   *
   * The array is palloc'd and is terminated with an invalid VXID.
   *
!  * If limitXmin is not InvalidTransactionId, we skip any backends with a 
!  * valid xmin >= limitXmin.	If allDbs is false, we skip backends attached
   * to other databases.  If excludeVacuum isn't zero, we skip processes for
   * which (excludeVacuum & vacuumFlags) is not zero.  Also, our own process
   * is always skipped.
***************
*** 1059,1069 ****
  			TransactionId pxmin = proc->xmin;
  
  			/*
! 			 * Note that InvalidTransactionId precedes all other XIDs, so a
! 			 * proc that hasn't set xmin yet will always be included.
  			 */
  			if (!TransactionIdIsValid(limitXmin) ||
! 				TransactionIdPrecedes(pxmin, limitXmin))
  			{
  				VirtualTransactionId vxid;
  
--- 1059,1070 ----
  			TransactionId pxmin = proc->xmin;
  
  			/*
! 			 * If we have a specific limitXmin then we need not include
! 			 * any procs with an unset xmin, since they have no snapshots
! 			 * older than limitXmin
  			 */
  			if (!TransactionIdIsValid(limitXmin) ||
! 				(TransactionIdIsValid(pxmin) && TransactionIdPrecedes(pxmin, limitXmin)))
  			{
  				VirtualTransactionId vxid;
  
