diff --git a/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala b/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala
index 1b4cc595b8471b34b098d0400b660c21834c0045..c473ab3c8e94c6e6565d5fa4c6d2bb3439f91d0c 100644
--- a/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala
+++ b/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala
@@ -478,7 +478,8 @@ private[spark] class MemoryStore(
             blockInfoManager.blockManager.stageExInfos.get(blockManager.currentStage) match {
               case Some(curStageExInfo) =>
                 // cur is this stage's output RDD
-                if (!curStageExInfo.curRunningRddMap.contains(bxi.blockId.asRDDId.get.rddId)) {
+                if (blockInfoManager.lockForWriting(bxi.blockId, blocking = false).isDefined &&
+                    !curStageExInfo.curRunningRddMap.contains(bxi.blockId.asRDDId.get.rddId)) {
                   selectedBlocks += bxi.blockId
                   freedMemory += bxi.size
                 }