forked from OSchip/llvm-project
[lldb] Prevent underflow in crashlog.py
Avoid a OverflowError (an underflow really) when the pc is zero. This can happen for "unknown frames" where the crashlog generator reports a zero pc. We could omit them altogether, but if they're part of the crashlog it seems fair to display them in lldb as well. rdar://92686666 Differential revision: https://reviews.llvm.org/D125716
This commit is contained in:
parent
07d549bce9
commit
9defb3b4b4
|
@ -114,14 +114,12 @@ class CrashLog(symbolication.Symbolicator):
|
|||
for frame_idx, frame in enumerate(self.frames):
|
||||
disassemble = (
|
||||
this_thread_crashed or options.disassemble_all_threads) and frame_idx < options.disassemble_depth
|
||||
if frame_idx == 0:
|
||||
symbolicated_frame_addresses = crash_log.symbolicate(
|
||||
frame.pc & crash_log.addr_mask, options.verbose)
|
||||
else:
|
||||
# Any frame above frame zero and we have to subtract one to
|
||||
# get the previous line entry
|
||||
symbolicated_frame_addresses = crash_log.symbolicate(
|
||||
(frame.pc & crash_log.addr_mask) - 1, options.verbose)
|
||||
|
||||
# Any frame above frame zero and we have to subtract one to
|
||||
# get the previous line entry.
|
||||
pc = frame.pc & crash_log.addr_mask
|
||||
pc = pc if frame_idx == 0 or pc == 0 else pc - 1
|
||||
symbolicated_frame_addresses = crash_log.symbolicate(pc, options.verbose)
|
||||
|
||||
if symbolicated_frame_addresses:
|
||||
symbolicated_frame_address_idx = 0
|
||||
|
|
Loading…
Reference in New Issue