[PATCH] D58267: [hwasan] Fix unsymbolized stack history printing.

Evgenii Stepanov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 14 17:41:19 PST 2019


eugenis created this revision.
eugenis added reviewers: kcc, pcc.
Herald added subscribers: jdoerfert, kubamracek.
Herald added a project: LLVM.

When symbols are unavailable, the current code prints

  sp: ... pc: ... (null) (null)

instead of module name + offset.

Change the output to include module name and offset, and also to match
the regular sanitizer stack trace format so that it is recognized by
symbolize.py out of the box.


https://reviews.llvm.org/D58267

Files:
  compiler-rt/lib/hwasan/hwasan_report.cc
  compiler-rt/test/hwasan/TestCases/stack-uar.c


Index: compiler-rt/test/hwasan/TestCases/stack-uar.c
===================================================================
--- compiler-rt/test/hwasan/TestCases/stack-uar.c
+++ compiler-rt/test/hwasan/TestCases/stack-uar.c
@@ -1,5 +1,6 @@
 // Tests use-after-return detection and reporting.
 // RUN: %clang_hwasan -O0 -fno-discard-value-names %s -o %t && not %run %t 2>&1 | FileCheck %s
+// RUN: %clang_hwasan -O0 -fno-discard-value-names %s -o %t && not %env_hwasan_opts=symbolize=0 %run %t 2>&1 | FileCheck %s --check-prefix=NOSYM
 
 // REQUIRES: stable-runtime
 
@@ -37,5 +38,9 @@
   // CHECK: buggy
   // CHECK: 4096 zzz
 
+  // NOSYM: Previously allocated frames:
+  // NOSYM-NEXT: sp: 0x{{.*}} #0 0x{{.*}} ({{.*}}/stack-uar.c.tmp+0x{{.*}}){{$}}
+  // NOSYM-NEXT: 16 CCC;
+
   // CHECK: SUMMARY: HWAddressSanitizer: tag-mismatch {{.*}} in main
 }
Index: compiler-rt/lib/hwasan/hwasan_report.cc
===================================================================
--- compiler-rt/lib/hwasan/hwasan_report.cc
+++ compiler-rt/lib/hwasan/hwasan_report.cc
@@ -252,8 +252,8 @@
         uptr pc_mask = (1ULL << 48) - 1;
         uptr pc = record & pc_mask;
         if (SymbolizedStack *frame = Symbolizer::GetOrInit()->SymbolizePC(pc)) {
-          frame_desc.append(" sp: 0x%zx pc: %p ", sp, pc);
-          RenderFrame(&frame_desc, "in %f %s:%l\n", 0, frame->info,
+          frame_desc.append(" sp: 0x%zx ", sp);
+          RenderFrame(&frame_desc, "#%n %p %F %L\n", 0, frame->info,
                       common_flags()->symbolize_vs_style,
                       common_flags()->strip_path_prefix);
           frame->ClearAll();


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D58267.186953.patch
Type: text/x-patch
Size: 1630 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190215/3890b70b/attachment.bin>


More information about the llvm-commits mailing list