[PATCH] D35654: [compiler-rt] Include thread ID into sanitizers logs

Vitaly Buka via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 19 17:42:31 PDT 2017


vitalybuka updated this revision to Diff 107428.
vitalybuka added a comment.

Reformat


https://reviews.llvm.org/D35654

Files:
  lib/sanitizer_common/sanitizer_printf.cc
  test/sanitizer_common/TestCases/Linux/vreport.cc


Index: test/sanitizer_common/TestCases/Linux/vreport.cc
===================================================================
--- /dev/null
+++ test/sanitizer_common/TestCases/Linux/vreport.cc
@@ -0,0 +1,23 @@
+// RUN: %clangxx -O0 %s -o %t && %env_tool_opts=verbosity=10 %run %t 2>&1 | FileCheck %s
+
+#include <pthread.h>
+#include <stdio.h>
+#include <sys/syscall.h>
+#include <unistd.h>
+
+void *thread(void *unused) {
+  printf("PID: %d\n", getpid());
+  printf("TID: %ld\n", syscall(SYS_gettid));
+  fflush(stdout);
+  return 0;
+}
+
+int main() {
+  pthread_t t;
+  pthread_create(&t, 0, thread, 0);
+  pthread_join(t, 0);
+  return 0;
+}
+// CHECK: PID: [[PID:[0-9]+]]
+// CHECK: TID: [[TID:[0-9]+]]
+// CHECK: ==[[PID]]:[[TID]]==
Index: lib/sanitizer_common/sanitizer_printf.cc
===================================================================
--- lib/sanitizer_common/sanitizer_printf.cc
+++ lib/sanitizer_common/sanitizer_printf.cc
@@ -260,16 +260,15 @@
                       "Buffer in Report is too short!\n"); \
       }
     if (append_pid) {
-      int pid = internal_getpid();
       const char *exe_name = GetProcessName();
       if (common_flags()->log_exe_name && exe_name) {
         needed_length += internal_snprintf(buffer, buffer_size,
                                            "==%s", exe_name);
         CHECK_NEEDED_LENGTH
       }
-      needed_length += internal_snprintf(buffer + needed_length,
-                                         buffer_size - needed_length,
-                                         "==%d==", pid);
+      needed_length +=
+          internal_snprintf(buffer + needed_length, buffer_size - needed_length,
+                            "==%d:%d==", internal_getpid(), GetTid());
       CHECK_NEEDED_LENGTH
     }
     needed_length += VSNPrintf(buffer + needed_length,
@@ -300,7 +299,7 @@
   va_end(args);
 }
 
-// Like Printf, but prints the current PID before the output string.
+// Like Printf, but prints the current PID:TID before the output string.
 FORMAT(1, 2)
 void Report(const char *format, ...) {
   va_list args;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D35654.107428.patch
Type: text/x-patch
Size: 2084 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170720/14233b16/attachment.bin>


More information about the llvm-commits mailing list