[PATCH] D19148: Always inlining PrintCurrentStackSlow of tsan library to fix tail-call issue
Chuang-Yu Cheng via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 19 01:00:48 PDT 2016
cycheng updated this revision to Diff 54167.
cycheng added a comment.
I just found there is ALWAYS_INLINE be defined in "sanitizer_internal_defs.h", use that instead of LLVM_ALWAYS_INLINE to avoid introducing llvm dependency.
http://reviews.llvm.org/D19148
Files:
lib/tsan/rtl/tsan_rtl_report.cc
Index: lib/tsan/rtl/tsan_rtl_report.cc
===================================================================
--- lib/tsan/rtl/tsan_rtl_report.cc
+++ lib/tsan/rtl/tsan_rtl_report.cc
@@ -680,6 +680,12 @@
PrintStack(SymbolizeStack(trace));
}
+// Always inlining PrintCurrentStackSlow, because LocatePcInTrace assumes
+// __sanitizer_print_stack_trace exists in the actual unwinded stack, but
+// tail-call to PrintCurrentStackSlow breaks this assumption because
+// __sanitizer_print_stack_trace disappears after tail-call.
+// See PR27280 comment 1~3 for examples.
+ALWAYS_INLINE
void PrintCurrentStackSlow(uptr pc) {
#ifndef SANITIZER_GO
BufferedStackTrace *ptrace =
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19148.54167.patch
Type: text/x-patch
Size: 675 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160419/7359a9a1/attachment.bin>
More information about the llvm-commits
mailing list