diff options
Diffstat (limited to '00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch')
-rw-r--r-- | 00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch b/00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch new file mode 100644 index 0000000..2112730 --- /dev/null +++ b/00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch @@ -0,0 +1,48 @@ +--- a/Tools/gdb/libpython.py 2013-04-06 03:41:58.000000000 -0400 ++++ b/Tools/gdb/libpython.py 2013-04-24 03:51:04.720540343 -0400 +@@ -274,6 +274,9 @@ + self.tp_name = tp_name + self.address = address + ++ def __len__(self): ++ return len(repr(self)) ++ + def __repr__(self): + # For the NULL pointer, we have no way of knowing a type, so + # special-case it as per +@@ -881,6 +884,8 @@ + filename = self.filename() + try: + f = open(os_fsencode(filename), 'r') ++ except TypeError: # filename is FakeRepr ++ return None + except IOError: + return None + with f: +@@ -1523,9 +1528,12 @@ + + def print_summary(self): + if self.is_evalframeex(): +- pyop = self.get_pyop() +- if pyop: ++ try: ++ pyop = self.get_pyop() + line = pyop.get_truncated_repr(MAX_OUTPUT_LEN) ++ except: ++ pyop = None ++ if pyop: + write_unicode(sys.stdout, '#%i %s\n' % (self.get_index(), line)) + if not pyop.is_optimized_out(): + line = pyop.current_line() +@@ -1542,7 +1550,10 @@ + + def print_traceback(self): + if self.is_evalframeex(): +- pyop = self.get_pyop() ++ try: ++ pyop = self.get_pyop() ++ except: ++ pyop = None + if pyop: + pyop.print_traceback() + if not pyop.is_optimized_out(): |