smd added a comment.

Hi folks,

I've been working on support hwasan for risc-v and I believe I've found an 
issue with the existing lit tests this commit causes.
Tests stack-{oob,uar,uas}.c check for correct backtrace being printed. From the 
code and comments the idea is to not to print any hwasan related frames(see the 
code and comments below).

  void HandleTagMismatch(AccessInfo ai, uptr pc, uptr frame, void *uc,          
                      
                         uptr *registers_frame) {                               
                      
    InternalMmapVector<BufferedStackTrace> stack_buffer(1);                     
                      
    BufferedStackTrace *stack = stack_buffer.data();                            
                      
    stack->Reset();                                                             
                      
    stack->Unwind(pc, frame, uc, common_flags()->fast_unwind_on_fatal);         
                      
                                                                                
                      
    // The second stack frame contains the failure __hwasan_check function, as  
                      
    // we have a stack frame for the registers saved in __hwasan_tag_mismatch 
that                    
    // we wish to ignore. This (currently) only occurs on AArch64, as x64       
               
    // implementations use SIGTRAP to implement the failure, and thus do not go 
                      
    // through the stack saver.                                                 
                      
    if (registers_frame && stack->trace && stack->size > 0) {                   
                      
      stack->trace++;                                                           
                   
      stack->size--;                                                            
                   
    } 

Before this commit the return address and frame pointer to were taken directly 
from **hwasan_tag_mismatch4**, while after the commit those addresses are 
calculated after another function being called from hwasan_tag_mismatch4 (the 
**HwasanTagMismatch** one).
So, if I understand it correctly, now it looks like 2 stack frames must be 
ignored(for **hwasan_tag_mismatch4** and **HwasanTagMismatch**) to get a proper 
backtrace.
What do you think?

Thanks


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103562/new/

https://reviews.llvm.org/D103562

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to