Continue backtrace even if a frame filter throws an exception (Phil Muldoon).
This commit is contained in:
parent
2b55d27fdb
commit
dd2c5ed0e6
82
gdb-btrobust.patch
Normal file
82
gdb-btrobust.patch
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
This should fix the error with glib. An error message will still be
|
||||||
|
printed, but a default backtrace will occur in this case.
|
||||||
|
|
||||||
|
--
|
||||||
|
|
||||||
|
--- gdb-7.7.90.20140613/gdb/python/py-framefilter.c-orig 2014-06-13 03:59:37.000000000 +0200
|
||||||
|
+++ gdb-7.7.90.20140613/gdb/python/py-framefilter.c 2014-06-27 17:20:00.945271945 +0200
|
||||||
|
@@ -1475,6 +1475,7 @@ gdbpy_apply_frame_filter (const struct e
|
||||||
|
volatile struct gdb_exception except;
|
||||||
|
PyObject *item;
|
||||||
|
htab_t levels_printed;
|
||||||
|
+ int count_printed = 0;
|
||||||
|
|
||||||
|
if (!gdb_python_initialized)
|
||||||
|
return EXT_LANG_BT_NO_FILTERS;
|
||||||
|
@@ -1494,24 +1495,7 @@ gdbpy_apply_frame_filter (const struct e
|
||||||
|
iterable = bootstrap_python_frame_filters (frame, frame_low, frame_high);
|
||||||
|
|
||||||
|
if (iterable == NULL)
|
||||||
|
- {
|
||||||
|
- /* Normally if there is an error GDB prints the exception,
|
||||||
|
- abandons the backtrace and exits. The user can then call "bt
|
||||||
|
- no-filters", and get a default backtrace (it would be
|
||||||
|
- confusing to automatically start a standard backtrace halfway
|
||||||
|
- through a Python filtered backtrace). However in the case
|
||||||
|
- where GDB cannot initialize the frame filters (most likely
|
||||||
|
- due to incorrect auto-load paths), GDB has printed nothing.
|
||||||
|
- In this case it is OK to print the default backtrace after
|
||||||
|
- printing the error message. GDB returns EXT_LANG_BT_NO_FILTERS
|
||||||
|
- here to signify there are no filters after printing the
|
||||||
|
- initialization error. This return code will trigger a
|
||||||
|
- default backtrace. */
|
||||||
|
-
|
||||||
|
- gdbpy_print_stack ();
|
||||||
|
- do_cleanups (cleanups);
|
||||||
|
- return EXT_LANG_BT_NO_FILTERS;
|
||||||
|
- }
|
||||||
|
+ goto error_nothing_printed;
|
||||||
|
|
||||||
|
/* If iterable is None, then there are no frame filters registered.
|
||||||
|
If this is the case, defer to default GDB printing routines in MI
|
||||||
|
@@ -1540,15 +1524,39 @@ gdbpy_apply_frame_filter (const struct e
|
||||||
|
gdbpy_print_stack ();
|
||||||
|
|
||||||
|
Py_DECREF (item);
|
||||||
|
+ count_printed++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item == NULL && PyErr_Occurred ())
|
||||||
|
- goto error;
|
||||||
|
+ {
|
||||||
|
+ if (count_printed > 0)
|
||||||
|
+ goto error;
|
||||||
|
+ else
|
||||||
|
+ goto error_nothing_printed;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
done:
|
||||||
|
do_cleanups (cleanups);
|
||||||
|
return success;
|
||||||
|
|
||||||
|
+ /* Normally if there is an error GDB prints the exception,
|
||||||
|
+ abandons the backtrace and exits. The user can then call "bt
|
||||||
|
+ no-filters", and get a default backtrace (it would be
|
||||||
|
+ confusing to automatically start a standard backtrace halfway
|
||||||
|
+ through a Python filtered backtrace). However in the case
|
||||||
|
+ where GDB cannot initialize the frame filters (most likely
|
||||||
|
+ due to incorrect auto-load paths), GDB has printed nothing.
|
||||||
|
+ In this case it is OK to print the default backtrace after
|
||||||
|
+ printing the error message. GDB returns EXT_LANG_BT_NO_FILTERS
|
||||||
|
+ here to signify there are no filters after printing the
|
||||||
|
+ initialization error. This return code will trigger a
|
||||||
|
+ default backtrace. */
|
||||||
|
+
|
||||||
|
+ error_nothing_printed:
|
||||||
|
+ gdbpy_print_stack ();
|
||||||
|
+ do_cleanups (cleanups);
|
||||||
|
+ return EXT_LANG_BT_NO_FILTERS;
|
||||||
|
+
|
||||||
|
/* Exit and abandon backtrace on error, printing the exception that
|
||||||
|
is set. */
|
||||||
|
error:
|
9
gdb.spec
9
gdb.spec
@ -25,7 +25,7 @@ Version: 7.7.90.20140613
|
|||||||
|
|
||||||
# The release always contains a leading reserved number, start it at 1.
|
# The release always contains a leading reserved number, start it at 1.
|
||||||
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||||
Release: 4%{?dist}
|
Release: 5%{?dist}
|
||||||
|
|
||||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain and GFDL
|
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain and GFDL
|
||||||
Group: Development/Debuggers
|
Group: Development/Debuggers
|
||||||
@ -540,6 +540,9 @@ Patch913: gdb-watchpoint-fork-fix.patch
|
|||||||
# Fix --with-system-readline with readline-6.3 patch 5.
|
# Fix --with-system-readline with readline-6.3 patch 5.
|
||||||
Patch914: gdb-readline-6.3.5.patch
|
Patch914: gdb-readline-6.3.5.patch
|
||||||
|
|
||||||
|
# Continue backtrace even if a frame filter throws an exception (Phil Muldoon).
|
||||||
|
Patch918: gdb-btrobust.patch
|
||||||
|
|
||||||
%if 0%{!?rhel:1} || 0%{?rhel} > 6
|
%if 0%{!?rhel:1} || 0%{?rhel} > 6
|
||||||
# RL_STATE_FEDORA_GDB would not be found for:
|
# RL_STATE_FEDORA_GDB would not be found for:
|
||||||
# Patch642: gdb-readline62-ask-more-rh.patch
|
# Patch642: gdb-readline62-ask-more-rh.patch
|
||||||
@ -839,6 +842,7 @@ find -name "*.info*"|xargs rm -f
|
|||||||
%patch911 -p1
|
%patch911 -p1
|
||||||
%patch913 -p1
|
%patch913 -p1
|
||||||
%patch914 -p1
|
%patch914 -p1
|
||||||
|
%patch918 -p1
|
||||||
|
|
||||||
%patch848 -p1
|
%patch848 -p1
|
||||||
%if 0%{!?el6:1}
|
%if 0%{!?el6:1}
|
||||||
@ -1324,6 +1328,9 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jun 27 2014 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.7.90.20140613-5.fc21
|
||||||
|
- Continue backtrace even if a frame filter throws an exception (Phil Muldoon).
|
||||||
|
|
||||||
* Tue Jun 24 2014 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.7.90.20140613-4.fc21
|
* Tue Jun 24 2014 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.7.90.20140613-4.fc21
|
||||||
- [aarch64] Fix compilation error.
|
- [aarch64] Fix compilation error.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user