[lldb/crashlog] Fix frame parser regex for when there is no source info
authorMed Ismail Bennani <medismail.bennani@gmail.com>
Fri, 4 Nov 2022 21:49:52 +0000 (14:49 -0700)
committerMed Ismail Bennani <medismail.bennani@gmail.com>
Sat, 5 Nov 2022 05:05:58 +0000 (22:05 -0700)
It can happen that the originator of a crash report doesn't have access
to certain images. When that's the case, ReportCrash won't show the
source info in the crash report stack frames, but only the stack address
and image name.

This patch fixes a bug in the crashlog stackframe parser regular
expression to optionally match the source info group.

rdar://101934135

Differential Revision: https://reviews.llvm.org/D137466

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
lldb/examples/python/crashlog.py
lldb/test/Shell/ScriptInterpreter/Python/Crashlog/Inputs/a.out.crash

index 47250f3..c3a450c 100755 (executable)
@@ -645,7 +645,7 @@ class TextCrashLogParser(CrashLogParser):
                              r'(.+?)\s+'               # img_name
                              r'(?:' +version+ r'\s+)?' # img_version
                              r'(0x[0-9a-fA-F]{4,})'    # addr (4 chars or more)
-                             r' +(.*)'                 # offs
+                             r'(?: +(.*))?'            # offs
                             )
     null_frame_regex = re.compile(r'^\d+\s+\?\?\?\s+0{4,} +')
     image_regex_uuid = re.compile(r'(0x[0-9a-fA-F]+)'          # img_lo
index 16a9558..4361ed5 100644 (file)
@@ -29,7 +29,7 @@ Terminating Process:   exc handler [21606]
 
 Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
 0   a.out                              @foo@ foo + 16 (test.c:3)
-1   a.out                              @bar@ bar + 9 (test.c:6)
+1   a.out                              @bar@
 2   a.out                              @main@ main + 20 (test.c:8)
 3   libdyld.dylib                      0x1000000 start + 1