diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c
new file mode 100644
index 8170ba3..a9bfcb5
*** a/src/backend/access/transam/subtrans.c
--- b/src/backend/access/transam/subtrans.c
*************** StartupSUBTRANS(TransactionId oldestActi
*** 238,243 ****
--- 238,244 ----
  {
  	int			startPage;
  	int			endPage;
+ 	int			wrapPage = TransactionIdToPage(0xFFFFFFFF);
  
  	/*
  	 * Since we don't expect pg_subtrans to be valid across crashes, we
*************** StartupSUBTRANS(TransactionId oldestActi
*** 254,259 ****
--- 255,262 ----
  	{
  		(void) ZeroSUBTRANSPage(startPage);
  		startPage++;
+ 		if (startPage > wrapPage)
+ 			startPage=0;
  	}
  	(void) ZeroSUBTRANSPage(startPage);
  
