summaryrefslogtreecommitdiffstats
path: root/00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch
diff options
context:
space:
mode:
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.patch48
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():