[PATCH] D90120: [sanitizer] Print errno for report file open failure

Teresa Johnson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 25 08:33:57 PDT 2020


tejohnson created this revision.
tejohnson added a reviewer: vitalybuka.
Herald added subscribers: Sanitizers, pengfei, dylanmckay.
Herald added a project: Sanitizers.
tejohnson requested review of this revision.

To help debug failures, specifically the llvm-avr-linux bot failure from
5c20d7db9f2791367b9311130eb44afecb16829c <https://reviews.llvm.org/rG5c20d7db9f2791367b9311130eb44afecb16829c>:

http://lab.llvm.org:8011/#/builders/112/builds/407/steps/5/logs/FAIL__MemProfiler-x86_64-linux-dynamic__log_path_t

Also re-enable the failing test which I temporarily disabled, to
see if this change will help identify why that particular log file can't
be opened for write on that bot (when another log file in the same
directory could earlier in the test).


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D90120

Files:
  compiler-rt/lib/sanitizer_common/sanitizer_file.cpp
  compiler-rt/test/memprof/TestCases/log_path_test.cpp


Index: compiler-rt/test/memprof/TestCases/log_path_test.cpp
===================================================================
--- compiler-rt/test/memprof/TestCases/log_path_test.cpp
+++ compiler-rt/test/memprof/TestCases/log_path_test.cpp
@@ -19,11 +19,10 @@
 // RUN:   not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-LONG --dump-input=always
 
 // Specifying the log name via the __memprof_profile_filename variable.
-// TODO: Temporarily disabled due to llvm-avr-linux bot failure
-// %clangxx_memprof  %s -o %t -DPROFILE_NAME_VAR="%t.log2"
-// rm -f %t.log2.*
-// %run %t
-// FileCheck %s --check-prefix=CHECK-GOOD --dump-input=always < %t.log2.*
+// RUN: %clangxx_memprof  %s -o %t -DPROFILE_NAME_VAR="%t.log2"
+// RUN: rm -f %t.log2.*
+// RUN: %run %t
+// RUN: FileCheck %s --check-prefix=CHECK-GOOD --dump-input=always < %t.log2.*
 
 #ifdef PROFILE_NAME_VAR
 #define xstr(s) str(s)
Index: compiler-rt/lib/sanitizer_common/sanitizer_file.cpp
===================================================================
--- compiler-rt/lib/sanitizer_common/sanitizer_file.cpp
+++ compiler-rt/lib/sanitizer_common/sanitizer_file.cpp
@@ -58,11 +58,15 @@
   } else {
     internal_snprintf(full_path, kMaxPathLength, "%s.%zu", path_prefix, pid);
   }
-  fd = OpenFile(full_path, WrOnly);
+  error_t err;
+  fd = OpenFile(full_path, WrOnly, &err);
   if (fd == kInvalidFd) {
     const char *ErrorMsgPrefix = "ERROR: Can't open file: ";
     WriteToFile(kStderrFd, ErrorMsgPrefix, internal_strlen(ErrorMsgPrefix));
     WriteToFile(kStderrFd, full_path, internal_strlen(full_path));
+    char errmsg[100];
+    internal_snprintf(errmsg, 100, " (reason: %d)", err);
+    WriteToFile(kStderrFd, errmsg, internal_strlen(errmsg));
     Die();
   }
   fd_pid = pid;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90120.300541.patch
Type: text/x-patch
Size: 1760 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201025/263a88e3/attachment.bin>


More information about the llvm-commits mailing list