@@ -507,20 +507,29 @@ def symbolize_address(self, addr, binary, offset, arch):
507
507
assert result
508
508
return result
509
509
510
- def get_symbolized_lines (self , symbolized_lines , inc_frame_counter = True ):
510
+ def get_symbolized_lines (self , symbolized_lines ):
511
511
if not symbolized_lines :
512
- if inc_frame_counter :
513
- self . frame_no += 1
514
- return [ self . current_line ]
515
- else :
516
- assert inc_frame_counter
517
- result = []
518
- for symbolized_frame in symbolized_lines :
519
- result . append (
520
- " #%s %s" % ( str ( self .frame_no ), symbolized_frame . rstrip ())
512
+ # If it is an unparsable frame, but contains a frame counter and address
513
+ # replace the frame counter so the stack is still consistent.
514
+ unknown_stack_frame_format = r"^( *#([0-9]+) +)(0x[0-9a-f]+) +.*"
515
+ match = re . match ( unknown_stack_frame_format , self . current_line )
516
+ if match :
517
+ rewritten_line = (
518
+ self . current_line [: match . start ( 2 )]
519
+ + str ( self . frame_no )
520
+ + self .current_line [ match . end ( 2 ) :]
521
521
)
522
522
self .frame_no += 1
523
- return result
523
+ return [rewritten_line ]
524
+ # Not a frame line so don't increment the frame counter.
525
+ return [self .current_line ]
526
+ result = []
527
+ for symbolized_frame in symbolized_lines :
528
+ result .append (
529
+ " #%s %s" % (str (self .frame_no ), symbolized_frame .rstrip ())
530
+ )
531
+ self .frame_no += 1
532
+ return result
524
533
525
534
def process_logfile (self ):
526
535
self .frame_no = 0
@@ -546,8 +555,7 @@ def process_line_posix(self, line):
546
555
match = re .match (stack_trace_line_format , line )
547
556
if not match :
548
557
logging .debug ('Line "{}" does not match regex' .format (line ))
549
- # Not a frame line so don't increment the frame counter.
550
- return self .get_symbolized_lines (None , inc_frame_counter = False )
558
+ return self .get_symbolized_lines (None )
551
559
logging .debug (line )
552
560
_ , frameno_str , addr , binary , offset = match .groups ()
553
561
0 commit comments