<div dir="ltr">Any chance of a test case?</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 21, 2016 at 5:12 AM, Kuba Brecka via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: kuba.brecka<br>
Date: Mon Mar 21 07:12:44 2016<br>
New Revision: 263939<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=263939&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=263939&view=rev</a><br>
Log:<br>
[tsan] Add some NULL pointer checks into the debugging API<br>
<br>
`__tsan_get_report_thread` and others can crash if a stack trace is missing, let's add the missing checks.<br>
<br>
Differential Revision: <a href="http://reviews.llvm.org/D18306" rel="noreferrer" target="_blank">http://reviews.llvm.org/D18306</a><br>
<br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/tsan/rtl/tsan_debugging.cc<br>
<br>
Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_debugging.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_debugging.cc?rev=263939&r1=263938&r2=263939&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_debugging.cc?rev=263939&r1=263938&r2=263939&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/tsan/rtl/tsan_debugging.cc (original)<br>
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_debugging.cc Mon Mar 21 07:12:44 2016<br>
@@ -86,8 +86,8 @@ int __tsan_get_report_stack(void *report<br>
   const ReportDesc *rep = (ReportDesc *)report;<br>
   CHECK_LT(idx, rep->stacks.Size());<br>
   ReportStack *stack = rep->stacks[idx];<br>
-  CopyTrace(stack->frames, trace, trace_size);<br>
-  return 1;<br>
+  if (stack) CopyTrace(stack->frames, trace, trace_size);<br>
+  return stack ? 1 : 0;<br>
 }<br>
<br>
 SANITIZER_INTERFACE_ATTRIBUTE<br>
@@ -102,7 +102,7 @@ int __tsan_get_report_mop(void *report,<br>
   *size = mop->size;<br>
   *write = mop->write ? 1 : 0;<br>
   *atomic = mop->atomic ? 1 : 0;<br>
-  CopyTrace(mop->stack->frames, trace, trace_size);<br>
+  if (mop->stack) CopyTrace(mop->stack->frames, trace, trace_size);<br>
   return 1;<br>
 }<br>
<br>
@@ -134,7 +134,7 @@ int __tsan_get_report_mutex(void *report<br>
   *mutex_id = mutex->id;<br>
   *addr = (void *)mutex->addr;<br>
   *destroyed = mutex->destroyed;<br>
-  CopyTrace(mutex->stack->frames, trace, trace_size);<br>
+  if (mutex->stack) CopyTrace(mutex->stack->frames, trace, trace_size);<br>
   return 1;<br>
 }<br>
<br>
@@ -150,7 +150,7 @@ int __tsan_get_report_thread(void *repor<br>
   *running = thread->running;<br>
   *name = thread->name;<br>
   *parent_tid = thread->parent_tid;<br>
-  CopyTrace(thread->stack->frames, trace, trace_size);<br>
+  if (thread->stack) CopyTrace(thread->stack->frames, trace, trace_size);<br>
   return 1;<br>
 }<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>