*** a/src/backend/access/transam/xlog.c
--- b/src/backend/access/transam/xlog.c
***************
*** 6256,6262 **** StartupXLOG(void)
  		}
  
  		/*
! 		 * set backupStartupPoint if we're starting archive recovery from a
  		 * base backup
  		 */
  		if (haveBackupLabel)
--- 6256,6262 ----
  		}
  
  		/*
! 		 * set backupStartPoint if we're starting recovery from a
  		 * base backup
  		 */
  		if (haveBackupLabel)
***************
*** 6610,6616 **** StartupXLOG(void)
  	 * be further ahead --- ControlFile->minRecoveryPoint cannot have been
  	 * advanced beyond the WAL we processed.
  	 */
! 	if (InArchiveRecovery &&
  		(XLByteLT(EndOfLog, minRecoveryPoint) ||
  		 !XLogRecPtrIsInvalid(ControlFile->backupStartPoint)))
  	{
--- 6610,6616 ----
  	 * be further ahead --- ControlFile->minRecoveryPoint cannot have been
  	 * advanced beyond the WAL we processed.
  	 */
! 	if (InRecovery &&
  		(XLByteLT(EndOfLog, minRecoveryPoint) ||
  		 !XLogRecPtrIsInvalid(ControlFile->backupStartPoint)))
  	{
***************
*** 8311,8318 **** xlog_redo(XLogRecPtr lsn, XLogRecord *record)
  		 * record, the backup was cancelled and the end-of-backup record will
  		 * never arrive.
  		 */
! 		if (InArchiveRecovery &&
! 			!XLogRecPtrIsInvalid(ControlFile->backupStartPoint))
  			ereport(ERROR,
  					(errmsg("online backup was cancelled, recovery cannot continue")));
  
--- 8311,8317 ----
  		 * record, the backup was cancelled and the end-of-backup record will
  		 * never arrive.
  		 */
! 		if (!XLogRecPtrIsInvalid(ControlFile->backupStartPoint))
  			ereport(ERROR,
  					(errmsg("online backup was cancelled, recovery cannot continue")));
  
