*** a/src/backend/access/transam/xlog.c
--- b/src/backend/access/transam/xlog.c
***************
*** 8007,8014 **** CreateCheckPoint(int flags)
  	if ((flags & (CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_END_OF_RECOVERY |
  				  CHECKPOINT_FORCE)) == 0)
  	{
  		if (curInsert == ControlFile->checkPoint +
! 			MAXALIGN(SizeOfXLogRecord + sizeof(CheckPoint)) &&
  			ControlFile->checkPoint == ControlFile->checkPointCopy.redo)
  		{
  			WALInsertLockRelease();
--- 8007,8018 ----
  	if ((flags & (CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_END_OF_RECOVERY |
  				  CHECKPOINT_FORCE)) == 0)
  	{
+ 		size_t	checkPointSize;
+ 		
+ 		checkPointSize = sizeof(CheckPoint);
  		if (curInsert == ControlFile->checkPoint +
! 			MAXALIGN(SizeOfXLogRecord + checkPointSize + 
! 				(checkPointSize > 255 ? SizeOfXLogRecordDataHeaderLong : SizeOfXLogRecordDataHeaderShort)) &&
  			ControlFile->checkPoint == ControlFile->checkPointCopy.redo)
  		{
  			WALInsertLockRelease();
