VACUUM FREEZE generated false cancelations of standby queries on an
otherwise idle master. Caused by an off-by-one error on cutoff_xid
which goes back to original commit.
Backpatch to all versions 9.0+
Analysis and report by Marco Nenciarini
Bug fix by Simon Riggs
    if (InHotStandby)
    {
        RelFileNode rnode;
+       TransactionId latestRemovedXid = cutoff_xid;
+
+       TransactionIdRetreat(latestRemovedXid);
 
        XLogRecGetBlockTag(record, 0, &rnode, NULL, NULL);
-       ResolveRecoveryConflictWithSnapshot(cutoff_xid, rnode);
+       ResolveRecoveryConflictWithSnapshot(latestRemovedXid, rnode);
    }
 
    if (XLogReadBufferForRedo(record, 0, &buffer) == BLK_NEEDS_REDO)