From b935d25938262c5161ab89752972f642f7dea5b6 Mon Sep 17 00:00:00 2001 From: Bohuslav Kabrda Date: Wed, 24 Apr 2013 11:47:45 +0200 Subject: [PATCH] Add fix for gdb tests failing on arm, rhbz#951802. --- ...on-gdb-corrupted-frames-in-backtrace.patch | 48 +++++++++++++++++++ python3.spec | 15 +++++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch 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(): diff --git a/python3.spec b/python3.spec index 307a3d7..eeeba9c 100644 --- a/python3.spec +++ b/python3.spec @@ -126,7 +126,7 @@ Summary: Version 3 of the Python programming language aka Python 3000 Name: python3 Version: %{pybasever}.1 -Release: 1%{?dist} +Release: 2%{?dist} License: Python Group: Development/Languages @@ -570,6 +570,15 @@ Patch177: 00177-platform-unicode.patch # Does not affect python2 AFAICS (different sysconfig values initialization) Patch178: 00178-dont-duplicate-flags-in-sysconfig.patch +# 00179 # +# Workaround for https://bugzilla.redhat.com/show_bug.cgi?id=951802 +# Reported upstream in http://bugs.python.org/issue17737 +# This patch basically looks at every frame and if it is somehow corrupted, +# it just stops printing the traceback - it doesn't fix the actual bug. +# This bug seems to only affect ARM. +# Doesn't seem to affect Python 2 AFAICS. +Patch179: 00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch + # (New patches go here ^^^) # # When adding new patches to "python" and "python3" in Fedora 17 onwards, @@ -821,6 +830,7 @@ done # 00176: upstream as of Python 3.3.1 %patch177 -p1 %patch178 -p1 +%patch179 -p1 # Currently (2010-01-15), http://docs.python.org/library is for 2.6, and there # are many differences between 2.6 and the Python 3 library. @@ -1664,6 +1674,9 @@ rm -fr %{buildroot} # ====================================================== %changelog +* Wed Apr 24 2013 Bohuslav Kabrda - 3.3.1-2 +- Add fix for gdb tests failing on arm, rhbz#951802. + * Tue Apr 09 2013 Bohuslav Kabrda - 3.3.1-1 - Updated to Python 3.3.1. - Refreshed patches: 55 (systemtap), 111 (no static lib), 146 (hashlib fips),