Skip to content

Commit

Permalink
[crashlog] Change heuristic to stripping the meta data from crashlogs
Browse files Browse the repository at this point in the history
Instead trying to pro-actively determine if the first line in a
crashlog contains meta data, change the heuristic to do the following:

 1. To trying to parse the whole file. If that fails, then:
 2. Strip the first line and try parsing the remainder of the file. If
    that fails, then:
 3. Fall back to the textual crashlog parser.

rdar://88580543

Differential revision: https://reviews.llvm.org/D119755
  • Loading branch information
JDevlieghere committed Feb 14, 2022
1 parent d52866e commit 343662a
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions lldb/examples/python/crashlog.py
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ class CrashLogFormatException(Exception):


class CrashLogParseException(Exception):
pass
pass


class CrashLogParser:
Expand All @@ -414,22 +414,22 @@ def __init__(self, debugger, path, verbose):
self.verbose = verbose
self.crashlog = CrashLog(debugger, self.path, self.verbose)

def parse_json(self, buffer):
try:
return json.loads(buffer)
except:
# The first line can contain meta data. Try stripping it and try
# again.
head, _, tail = buffer.partition('\n')
return json.loads(tail)

def parse(self):
with open(self.path, 'r') as f:
buffer = f.read()

# Skip the first line if it contains meta data.
head, _, tail = buffer.partition('\n')
try:
metadata = json.loads(head)
if 'app_name' in metadata and 'app_version' in metadata:
buffer = tail
except ValueError:
pass

try:
self.data = json.loads(buffer)
except ValueError:
self.data = self.parse_json(buffer)
except:
raise CrashLogFormatException()

try:
Expand Down

0 comments on commit 343662a

Please sign in to comment.