gdb/gdb-btrobust.patch
DistroBaker 924c7cd4ea Merged update from upstream sources
This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/gdb.git#d824e7f658857c466b24beb3740fbdf29a27900f
2021-04-04 23:35:32 +00:00

73 lines
2.4 KiB
Diff

From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Fedora GDB patches <invalid@email.com>
Date: Fri, 27 Oct 2017 21:07:50 +0200
Subject: gdb-btrobust.patch
;; Continue backtrace even if a frame filter throws an exception (Phil Muldoon).
;;=push
This should fix the error with glib. An error message will still be
printed, but a default backtrace will occur in this case.
--
diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
--- a/gdb/python/py-framefilter.c
+++ b/gdb/python/py-framefilter.c
@@ -1204,6 +1204,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
htab_eq_pointer,
NULL));
+ int count_printed = 0;
while (true)
{
gdbpy_ref<> item (PyIter_Next (iterable.get ()));
@@ -1212,8 +1213,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
{
if (PyErr_Occurred ())
{
- gdbpy_print_stack_or_quit ();
- return EXT_LANG_BT_ERROR;
+ gdbpy_print_stack ();
+ return count_printed > 0 ? EXT_LANG_BT_ERROR : EXT_LANG_BT_NO_FILTERS;
}
break;
}
@@ -1245,7 +1246,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
/* Do not exit on error printing a single frame. Print the
error and continue with other frames. */
if (success == EXT_LANG_BT_ERROR)
- gdbpy_print_stack_or_quit ();
+ gdbpy_print_stack ();
+ count_printed++;
}
return success;
diff --git a/gdb/testsuite/gdb.python/py-framefilter.exp b/gdb/testsuite/gdb.python/py-framefilter.exp
--- a/gdb/testsuite/gdb.python/py-framefilter.exp
+++ b/gdb/testsuite/gdb.python/py-framefilter.exp
@@ -277,9 +277,20 @@ gdb_test_multiple "bt 1" $test {
# Now verify that we can see a quit.
gdb_test_no_output "python name_error = KeyboardInterrupt" \
"Change ErrorFilter to throw KeyboardInterrupt"
-gdb_test "bt 1" "Quit" "bt 1 with KeyboardInterrupt"
-
-
+set re1 [multi_line \
+ "Python Exception <class 'KeyboardInterrupt'> whoops: " \
+ "\\(More stack frames follow\.\.\.\\)"]
+set re2 [multi_line \
+ "Python Exception <type 'exceptions.KeyboardInterrupt'> whoops: " \
+ "\\(More stack frames follow\.\.\.\\)"]
+gdb_test_multiple "bt 1" "" {
+ -re -wrap $re1 {
+ pass $gdb_test_name
+ }
+ -re -wrap $re2 {
+ pass $gdb_test_name
+ }
+}
# Test with no debuginfo
# We cannot use prepare_for_testing as we have to set the safe-patch