*** a/src/backend/access/transam/xlog.c
--- b/src/backend/access/transam/xlog.c
***************
*** 8975,8980 **** CancelBackup(void)
--- 8975,8987 ----
  {
  	struct stat stat_buf;
  
+ 	/*
+ 	 * During recovery, we don't rename the "backup_label" file since
+ 	 * it might be required for subsequent recovery.
+ 	 */
+ 	if (XLogCtl->SharedRecoveryInProgress)
+ 		return;
+ 
  	/* if the file is not there, return */
  	if (stat(BACKUP_LABEL_FILE, &stat_buf) < 0)
  		return;
*** a/src/backend/postmaster/postmaster.c
--- b/src/backend/postmaster/postmaster.c
***************
*** 2168,2174 **** pmdie(SIGNAL_ARGS)
  					(errmsg("received smart shutdown request")));
  
  			if (pmState == PM_RUN || pmState == PM_RECOVERY ||
! 				pmState == PM_HOT_STANDBY)
  			{
  				/* autovacuum workers are told to shut down immediately */
  				SignalAutovacWorkers(SIGTERM);
--- 2168,2174 ----
  					(errmsg("received smart shutdown request")));
  
  			if (pmState == PM_RUN || pmState == PM_RECOVERY ||
! 				pmState == PM_HOT_STANDBY || pmState == PM_STARTUP)
  			{
  				/* autovacuum workers are told to shut down immediately */
  				SignalAutovacWorkers(SIGTERM);
***************
*** 4208,4214 **** sigusr1_handler(SIGNAL_ARGS)
  	}
  
  	if (CheckPostmasterSignal(PMSIGNAL_START_WALRECEIVER) &&
! 		WalReceiverPID == 0)
  	{
  		/* Startup Process wants us to start the walreceiver process. */
  		WalReceiverPID = StartWalReceiver();
--- 4208,4216 ----
  	}
  
  	if (CheckPostmasterSignal(PMSIGNAL_START_WALRECEIVER) &&
! 		WalReceiverPID == 0 &&
! 		(pmState == PM_STARTUP || pmState == PM_RECOVERY ||
! 		 pmState == PM_HOT_STANDBY))
  	{
  		/* Startup Process wants us to start the walreceiver process. */
  		WalReceiverPID = StartWalReceiver();
