[compiler-rt] [Sanitizer][Windows] Fix Windows buildbot failure after 64790064e82467b43c04a70b6e9873e6939be81f (PR #82215)

via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 18 22:40:39 PST 2024


https://github.com/Enna1 updated https://github.com/llvm/llvm-project/pull/82215

>From f5d6ce9ea6aeb018d395afe10e039e925653ff19 Mon Sep 17 00:00:00 2001
From: "xumingjie.enna1" <xumingjie.enna1 at bytedance.com>
Date: Mon, 19 Feb 2024 14:21:14 +0800
Subject: [PATCH 1/2] [Sanitizer][Windows] Fix Windows buildbot failure after
 64790064e82467b43c04a70b6e9873e6939be81f

In #77488, a param raw_report is added for function UnmapOrDie(),
causes the Windows buildbot failure, see https://lab.llvm.org/buildbot/#/builders/127/builds/62395.
This patch should fix the Windows buildbot failure.
---
 compiler-rt/lib/sanitizer_common/sanitizer_common.h | 2 +-
 compiler-rt/lib/sanitizer_common/sanitizer_win.cpp  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common.h b/compiler-rt/lib/sanitizer_common/sanitizer_common.h
index dd4c71640b4492..47697ef280aa0d 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_common.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_common.h
@@ -599,7 +599,7 @@ class InternalMmapVectorNoCtor {
     T *new_data =
         (T *)MmapOrDie(new_capacity_bytes, "InternalMmapVector", raw_report);
     internal_memcpy(new_data, data_, size_ * sizeof(T));
-    UnmapOrDie(data_, capacity_bytes_);
+    UnmapOrDie(data_, capacity_bytes_, raw_report);
     data_ = new_data;
     capacity_bytes_ = new_capacity_bytes;
   }
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
index 06e496523eeaa1..4337515dc979a4 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
@@ -144,7 +144,7 @@ void *MmapOrDie(uptr size, const char *mem_type, bool raw_report) {
   return rv;
 }
 
-void UnmapOrDie(void *addr, uptr size) {
+void UnmapOrDie(void *addr, uptr size, bool) {
   if (!size || !addr)
     return;
 

>From 0a7660b9bbeaa284cdc368a47844be3df0b9a074 Mon Sep 17 00:00:00 2001
From: "xumingjie.enna1" <xumingjie.enna1 at bytedance.com>
Date: Mon, 19 Feb 2024 14:36:24 +0800
Subject: [PATCH 2/2] use ReportMunmapFailureAndDie in UnmapOrDie

---
 compiler-rt/lib/sanitizer_common/sanitizer_win.cpp | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
index 4337515dc979a4..4e5ad8e4693b45 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
@@ -144,7 +144,7 @@ void *MmapOrDie(uptr size, const char *mem_type, bool raw_report) {
   return rv;
 }
 
-void UnmapOrDie(void *addr, uptr size, bool) {
+void UnmapOrDie(void *addr, uptr size, bool raw_report) {
   if (!size || !addr)
     return;
 
@@ -156,10 +156,7 @@ void UnmapOrDie(void *addr, uptr size, bool) {
   // fails try MEM_DECOMMIT.
   if (VirtualFree(addr, 0, MEM_RELEASE) == 0) {
     if (VirtualFree(addr, size, MEM_DECOMMIT) == 0) {
-      Report("ERROR: %s failed to "
-             "deallocate 0x%zx (%zd) bytes at address %p (error code: %d)\n",
-             SanitizerToolName, size, size, addr, GetLastError());
-      CHECK("unable to unmap" && 0);
+      ReportMunmapFailureAndDie(addr, size, GetLastError(), raw_report);
     }
   }
 }



More information about the llvm-commits mailing list