diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp b/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp --- a/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp +++ b/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp @@ -603,8 +603,8 @@ // Second and subsequent calls map heap. if (shadow_end <= ctx->mapped_shadow_end) return; - if (ctx->mapped_shadow_begin < shadow_begin) - ctx->mapped_shadow_begin = shadow_begin; + if (!ctx->mapped_shadow_begin || ctx->mapped_shadow_begin > shadow_begin) + ctx->mapped_shadow_begin = shadow_begin; if (shadow_begin < ctx->mapped_shadow_end) shadow_begin = ctx->mapped_shadow_end; VPrintf(2, "MapShadow begin/end = (0x%zx-0x%zx)\n",