[compiler-rt] make mmap-munmap interceptor fail earlier (PR #169775)

Thurston Dang via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 27 13:52:15 PST 2025


================
@@ -266,6 +266,61 @@ void ErrorAllocationSizeTooBig::Print() {
   ReportErrorSummary(scariness.GetDescription(), stack);
 }
 
+void ErrorMmapAddrOverflow::Print() {
+  Decorator d;
+  Printf("%s", d.Error());
+  Report("ERROR: AddressSanitizer: mmap requested memory range (0x%zx + 0x%zx) "
+         "causes address overflow\n", start, length);
+  Printf("%s", d.Default());
+  stack->Print();
+  PrintHintAllocatorCannotReturnNull();
+  ReportErrorSummary(scariness.GetDescription(), stack);
+}
+
+void ErrorMmapShadowOverlap::Print() {
+  Decorator d;
+  Printf("%s", d.Error());
+  Report("ERROR: AddressSanitizer: mmap requested memory range 0x%zx-0x%zx "
+         "overlaps with ASan shadow memory\n", start, end);
+  Printf("%s", d.Default());
+  stack->Print();
+  PrintHintAllocatorCannotReturnNull();
+  ReportErrorSummary(scariness.GetDescription(), stack); 
+}
+
+void ErrorMmapOutsideRange::Print() {
+  Decorator d;
+  Printf("%s", d.Error());
+  Report("ERROR: AddressSanitizer: mmap requested memory range 0x%zx-0x%zx is "
+         "outside ASan's instrumentable application memory range\n", start, end);
+  Printf("%s", d.Default());
+  stack->Print();
+  PrintHintAllocatorCannotReturnNull();
+  ReportErrorSummary(scariness.GetDescription(), stack);
+}
+
+void ErrorMunmapShadowOverlap::Print() {
----------------
thurstond wrote:

Is the error-reporting necessary? If ASan can't honor a fixed memory mapping for whatever reason, it suffices to return `MAP_FAILED` (this is what HWASan's interceptor does); the shadow is an implementation detail that the user doesn't need to know about.

https://github.com/llvm/llvm-project/pull/169775


More information about the llvm-commits mailing list