[compiler-rt] r221520 - [sanitizer] Never remove the last frame off the stack trace.

Evgeniy Stepanov eugeni.stepanov at gmail.com
Fri Nov 14 07:14:44 PST 2014


I've added a comment in r222000.
Thanks for bringing this up!

On Wed, Nov 12, 2014 at 9:48 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>
> On Wed, Nov 12, 2014 at 1:03 AM, Evgeniy Stepanov
> <eugeni.stepanov at gmail.com> wrote:
>>
>> We remove frames that belong to the sanitizer runtime off the top of
>> the stack trace.
>>
>> This situation, when the unwinder returned a single-frame stack trace,
>> was observed in an unusual environment where the CFI unwinder
>> misbehaved for a yet unknown reason.
>
>
> It'd be nice to have an explanation here at some point, otherwise I'd be
> concerned about someone removing this code as meaningless.
>
>>
>> It involved building ASan runtime
>> with a custom build system (neither make or cmake), and I can't
>> reproduce the results in a test.
>>
>> On Wed, Nov 12, 2014 at 1:46 AM, David Blaikie <dblaikie at gmail.com> wrote:
>> >
>> >
>> > On Fri, Nov 7, 2014 at 4:03 AM, Evgeniy Stepanov
>> > <eugeni.stepanov at gmail.com>
>> > wrote:
>> >>
>> >> Author: eugenis
>> >> Date: Fri Nov  7 06:03:07 2014
>> >> New Revision: 221520
>> >>
>> >> URL: http://llvm.org/viewvc/llvm-project?rev=221520&view=rev
>> >> Log:
>> >> [sanitizer] Never remove the last frame off the stack trace.
>> >
>> >
>> > Test case? I'm also not quite sure what this is doing - why are we
>> > popping/ignoring frames exactly?
>> >
>> >>
>> >>
>> >> It can only make it worse.
>> >>
>> >> Modified:
>> >>
>> >>
>> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_unwind_posix_libcdep.cc
>> >>
>> >> Modified:
>> >>
>> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_unwind_posix_libcdep.cc
>> >> URL:
>> >>
>> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_unwind_posix_libcdep.cc?rev=221520&r1=221519&r2=221520&view=diff
>> >>
>> >>
>> >> ==============================================================================
>> >> ---
>> >>
>> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_unwind_posix_libcdep.cc
>> >> (original)
>> >> +++
>> >>
>> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_unwind_posix_libcdep.cc Fri
>> >> Nov  7 06:03:07 2014
>> >> @@ -116,7 +116,7 @@ void BufferedStackTrace::SlowUnwindStack
>> >>    // We need to pop a few frames so that pc is on top.
>> >>    uptr to_pop = LocatePcInTrace(pc);
>> >>    // trace_buffer[0] belongs to the current function so we always pop
>> >> it.
>> >> -  if (to_pop == 0)
>> >> +  if (to_pop == 0 && size > 1)
>> >>      to_pop = 1;
>> >>    PopStackFrames(to_pop);
>> >>    trace_buffer[0] = pc;
>> >>
>> >>
>> >> _______________________________________________
>> >> llvm-commits mailing list
>> >> llvm-commits at cs.uiuc.edu
>> >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> >
>> >
>
>



More information about the llvm-commits mailing list