[compiler-rt] r175661 - [Sanitizer] Try to fix infinite loop in frame pointer unwinder

Kostya Serebryany kcc at google.com
Wed Feb 20 20:45:47 PST 2013


Thanks!


On Thu, Feb 21, 2013 at 12:29 AM, Reid Kleckner <reid at kleckner.net> wrote:

> Author: rnk
> Date: Wed Feb 20 14:29:48 2013
> New Revision: 175661
>
> URL: http://llvm.org/viewvc/llvm-project?rev=175661&view=rev
> Log:
> [Sanitizer] Try to fix infinite loop in frame pointer unwinder
>
> Using > instead of >= ensures that each frame deref makes progress and
> that we eventually terminate.
>
> Issue: https://code.google.com/p/address-sanitizer/issues/detail?id=162
>
> Modified:
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc?rev=175661&r1=175660&r2=175661&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc
> (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.cc Wed Feb
> 20 14:29:48 2013
> @@ -131,8 +131,9 @@ void StackTrace::FastUnwindStack(uptr pc
>    CHECK(size == 0 && trace[0] == pc);
>    size = 1;
>    uhwptr *frame = (uhwptr *)bp;
> -  uhwptr *prev_frame = frame;
> -  while (frame >= prev_frame &&
> +  uhwptr *prev_frame = frame - 1;
> +  // Avoid infinite loop when frame == frame[0] by using frame >
> prev_frame.
> +  while (frame > prev_frame &&
>           frame < (uhwptr *)stack_top - 2 &&
>           frame > (uhwptr *)stack_bottom &&
>           size < max_size) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130221/904aca16/attachment.html>


More information about the llvm-commits mailing list