Suppress repeated warnings when loading a core file
Backport upstream changes which prevent repeated warnings from being printed when loading a core file (RHBZ 2160211, Lancelot SIX).
This commit is contained in:
parent
57b0ecded6
commit
d5dc87ea90
@ -206,3 +206,8 @@ Patch046: gdb-binutils29988-read_indexed_address.patch
|
|||||||
# first seen when building with GCC 13.1.1 20230426 (Red Hat ;; 13.1.1-1).
|
# first seen when building with GCC 13.1.1 20230426 (Red Hat ;; 13.1.1-1).
|
||||||
Patch047: gdb-rhbz2192105-ftbs-dangling-pointer
|
Patch047: gdb-rhbz2192105-ftbs-dangling-pointer
|
||||||
|
|
||||||
|
# Backport two commits, 0ad504dd464 and ea70f941f9b, from Lancelot SIX
|
||||||
|
# which prevent repeated warnings from being printed while loading a
|
||||||
|
# core file. (RH BZ 2160211)
|
||||||
|
Patch048: gdb-rhbz2160211-excessive-core-file-warnings.patch
|
||||||
|
|
||||||
|
@ -45,3 +45,4 @@
|
|||||||
%patch -p1 -P045
|
%patch -p1 -P045
|
||||||
%patch -p1 -P046
|
%patch -p1 -P046
|
||||||
%patch -p1 -P047
|
%patch -p1 -P047
|
||||||
|
%patch -p1 -P048
|
||||||
|
@ -45,3 +45,4 @@ gdb-add-index.patch
|
|||||||
gdb-rhbz1553104-s390x-arch12-test.patch
|
gdb-rhbz1553104-s390x-arch12-test.patch
|
||||||
gdb-binutils29988-read_indexed_address.patch
|
gdb-binutils29988-read_indexed_address.patch
|
||||||
gdb-rhbz2192105-ftbs-dangling-pointer
|
gdb-rhbz2192105-ftbs-dangling-pointer
|
||||||
|
gdb-rhbz2160211-excessive-core-file-warnings.patch
|
||||||
|
108
gdb-rhbz2160211-excessive-core-file-warnings.patch
Normal file
108
gdb-rhbz2160211-excessive-core-file-warnings.patch
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kevin Buettner <kevinb@redhat.com>
|
||||||
|
Date: Thu, 29 Jun 2023 18:20:30 -0700
|
||||||
|
Subject: gdb-rhbz2160211-excessive-core-file-warnings.patch
|
||||||
|
|
||||||
|
;; Backport two commits, 0ad504dd464 and ea70f941f9b, from Lancelot SIX
|
||||||
|
;; which prevent repeated warnings from being printed while loading a
|
||||||
|
;; core file. (RH BZ 2160211)
|
||||||
|
|
||||||
|
gdb/corelow.c: avoid repeated warnings in build_file_mappings
|
||||||
|
|
||||||
|
When GDB opens a coredump it tries to locate and then open all files
|
||||||
|
which were mapped in the process.
|
||||||
|
|
||||||
|
If a file is found but cannot be opened with BFD (bfd_open /
|
||||||
|
bfd_check_format fails), then a warning is printed to the user. If the
|
||||||
|
same file was mapped multiple times in the process's address space, the
|
||||||
|
warning is printed once for each time the file was mapped. I find this
|
||||||
|
un-necessarily noisy.
|
||||||
|
|
||||||
|
This patch makes it so the warning message is printed only once per
|
||||||
|
file.
|
||||||
|
|
||||||
|
There was a comment in the code assuming that if the file was found on
|
||||||
|
the system, opening it (bfd_open + bfd_check_format) should always
|
||||||
|
succeed. A recent change in BFD (014a602b86f "Don't optimise bfd_seek
|
||||||
|
to same position") showed that this assumption is not valid. For
|
||||||
|
example, it is possible to have a core dump of a process which had
|
||||||
|
mmaped an IO page from a DRI render node (/dev/dri/runderD$NUM). In
|
||||||
|
such case the core dump does contain the information that portions of
|
||||||
|
this special file were mapped in the host process, but trying to seek to
|
||||||
|
position 0 will fail, making bfd_check_format fail. This patch removes
|
||||||
|
this comment.
|
||||||
|
|
||||||
|
Reviewed-By: John Baldwin <jhb@FreeBSD.org>
|
||||||
|
Approved-By: Andrew Burgess <aburgess@redhat.com>
|
||||||
|
|
||||||
|
gdb/corelow.c: do not try to reopen a file if open failed once
|
||||||
|
|
||||||
|
In the current implementation, core_target::build_file_mappings will try
|
||||||
|
to locate and open files which were mapped in the process for which the
|
||||||
|
core dump was produced. If the file cannot be found or cannot be
|
||||||
|
opened, GDB will re-try to open it once for each time it was mapped in
|
||||||
|
the process's address space.
|
||||||
|
|
||||||
|
This patch makes it so GDB recognizes that it has already failed to open
|
||||||
|
a given file once and does not re-try the process for each mapping.
|
||||||
|
|
||||||
|
Reviewed-By: John Baldwin <jhb@FreeBSD.org>
|
||||||
|
Approved-By: Andrew Burgess <aburgess@redhat.com>
|
||||||
|
|
||||||
|
diff --git a/gdb/corelow.c b/gdb/corelow.c
|
||||||
|
--- a/gdb/corelow.c
|
||||||
|
+++ b/gdb/corelow.c
|
||||||
|
@@ -237,6 +237,16 @@ core_target::build_file_mappings ()
|
||||||
|
weed out non-file-backed mappings. */
|
||||||
|
gdb_assert (filename != nullptr);
|
||||||
|
|
||||||
|
+ if (unavailable_paths.find (filename) != unavailable_paths.end ())
|
||||||
|
+ {
|
||||||
|
+ /* We have already seen some mapping for FILENAME but failed to
|
||||||
|
+ find/open the file. There is no point in trying the same
|
||||||
|
+ thing again so just record that the range [start, end) is
|
||||||
|
+ unavailable. */
|
||||||
|
+ m_core_unavailable_mappings.emplace_back (start, end - start);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
struct bfd *bfd = bfd_map[filename];
|
||||||
|
if (bfd == nullptr)
|
||||||
|
{
|
||||||
|
@@ -254,11 +264,10 @@ core_target::build_file_mappings ()
|
||||||
|
if (expanded_fname == nullptr)
|
||||||
|
{
|
||||||
|
m_core_unavailable_mappings.emplace_back (start, end - start);
|
||||||
|
- /* Print just one warning per path. */
|
||||||
|
- if (unavailable_paths.insert (filename).second)
|
||||||
|
- warning (_("Can't open file %s during file-backed mapping "
|
||||||
|
- "note processing"),
|
||||||
|
- filename);
|
||||||
|
+ unavailable_paths.insert (filename);
|
||||||
|
+ warning (_("Can't open file %s during file-backed mapping "
|
||||||
|
+ "note processing"),
|
||||||
|
+ filename);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -268,18 +277,11 @@ core_target::build_file_mappings ()
|
||||||
|
if (bfd == nullptr || !bfd_check_format (bfd, bfd_object))
|
||||||
|
{
|
||||||
|
m_core_unavailable_mappings.emplace_back (start, end - start);
|
||||||
|
- /* If we get here, there's a good chance that it's due to
|
||||||
|
- an internal error. We issue a warning instead of an
|
||||||
|
- internal error because of the possibility that the
|
||||||
|
- file was removed in between checking for its
|
||||||
|
- existence during the expansion in exec_file_find()
|
||||||
|
- and the calls to bfd_openr() / bfd_check_format().
|
||||||
|
- Output both the path from the core file note along
|
||||||
|
- with its expansion to make debugging this problem
|
||||||
|
- easier. */
|
||||||
|
+ unavailable_paths.insert (filename);
|
||||||
|
warning (_("Can't open file %s which was expanded to %s "
|
||||||
|
"during file-backed mapping note processing"),
|
||||||
|
filename, expanded_fname.get ());
|
||||||
|
+
|
||||||
|
if (bfd != nullptr)
|
||||||
|
bfd_close (bfd);
|
||||||
|
return;
|
10
gdb.spec
10
gdb.spec
@ -57,7 +57,7 @@ Version: 13.2
|
|||||||
|
|
||||||
# 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: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
|
|
||||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL
|
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL
|
||||||
# Do not provide URL for snapshots as the file lasts there only for 2 days.
|
# Do not provide URL for snapshots as the file lasts there only for 2 days.
|
||||||
@ -1252,10 +1252,14 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Wed Jun 28 2023 Python Maint <python-maint@redhat.com>
|
* Fri Jun 30 2023 Kevin Buettner <kevinb@redhat.com> - 13.2-3
|
||||||
|
- Backport upstream changes which prevent repeated warnings from being
|
||||||
|
printed when loading a core file (RHBZ 2160211, Lancelot SIX).
|
||||||
|
|
||||||
|
* Wed Jun 28 2023 Python Maint <python-maint@redhat.com> - 13.2-2
|
||||||
- Rebuilt for Python 3.12
|
- Rebuilt for Python 3.12
|
||||||
|
|
||||||
* Sun Jun 25 2023 Alexandra Hájková <ahajkova@redhat.com> - 13.2
|
* Sun Jun 25 2023 Alexandra Hájková <ahajkova@redhat.com> - 13.2-1
|
||||||
- Rebase to FSF GDB 13.22.
|
- Rebase to FSF GDB 13.22.
|
||||||
- Remove gdb-rhbz2177655-aarch64-pauth-valid-regcache.patch.
|
- Remove gdb-rhbz2177655-aarch64-pauth-valid-regcache.patch.
|
||||||
- Remove gdb-rhbz2183595-rustc-inside_main.patch.
|
- Remove gdb-rhbz2183595-rustc-inside_main.patch.
|
||||||
|
Loading…
Reference in New Issue
Block a user