[PATCH] D58861: [NFC][Sanitizer] Cleanup ASan's GetStackTrace implementation
    Julian Lettner via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon Mar  4 10:15:23 PST 2019
    
    
  
yln marked 2 inline comments as done.
yln added inline comments.
================
Comment at: compiler-rt/lib/asan/asan_stack.cc:48
+
+  ScopedUnwinding unwind_scope(t);
+  if (WillUseFastUnwind(request_fast)) {
----------------
vitalybuka wrote:
> UNREACHABLE makes it not NFC
> 
> What about:
> ```
> 
>   if (t && !t->isUnwinding() && WillUseFastUnwind(request_fast)) {
>     ScopedUnwinding unwind_scope(t);
>     uptr top = t->stack_top();
>     uptr bottom = t->stack_bottom();
>     if (!SANITIZER_MIPS || IsValidFrame(bp, top, bottom)) {
>       UnwindFast(pc, bp, top, bottom, max_depth);
>       return;
>     } 
>   }
> 
> #if SANITIZER_CAN_SLOW_UNWIND
>     UnwindSlowWithOptionalContext(pc, context, max_depth);
> #endif
> ```
> 
> 
You are right, the patch is not strictly NFC:
1) Scope was moved
2) t->isUnwinding() also skips when slow unwinding
I think these are issues with the current implementation.
I will remove those changes to make this patch strictly NFC and provide separate patches with explanations.
Note that, UNREACHABLE is required for NFC. We are effectively inlining the old Unwind overload which has this code.
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58861/new/
https://reviews.llvm.org/D58861
    
    
More information about the llvm-commits
mailing list