From c0349431f7b44ae62225bc10a8bd7f7aad3baa91 Mon Sep 17 00:00:00 2001 From: Lianbo Jiang Date: Thu, 4 May 2023 10:22:08 +0800 Subject: [PATCH] Rebase to upstream crash-8.0.3 --- .crash.metadata | 2 + .gitignore | 1 + ...rtion-failure-in-the-gdb-s-copy_type.patch | 75 ------------------ ...nd-printing-bogus-exception-frame-wa.patch | 79 ------------------- ...nd-unnecessarily-printing-an-excepti.patch | 78 ------------------ ...0.2_build.patch => crash-8.0.3_build.patch | 8 +- crash.spec | 17 ++-- lzo_snappy_zstd.patch | 8 +- sources | 2 +- 9 files changed, 19 insertions(+), 251 deletions(-) create mode 100644 .crash.metadata delete mode 100644 0001-gdb-Fix-an-assertion-failure-in-the-gdb-s-copy_type.patch delete mode 100644 0002-Fix-for-bt-command-printing-bogus-exception-frame-wa.patch delete mode 100644 0003-Fix-for-bt-command-unnecessarily-printing-an-excepti.patch rename crash-8.0.2_build.patch => crash-8.0.3_build.patch (91%) diff --git a/.crash.metadata b/.crash.metadata new file mode 100644 index 0000000..c5af64b --- /dev/null +++ b/.crash.metadata @@ -0,0 +1,2 @@ +d154d57291952baea7929b706d76a91edd07552e crash-8.0.3.tar.gz +6bf5ee7877a4740835745ed97ce525a00bb2232c gdb-10.2.tar.gz diff --git a/.gitignore b/.gitignore index 0a407bd..4d89d06 100644 --- a/.gitignore +++ b/.gitignore @@ -47,5 +47,6 @@ crash-5.0.6.tar.gz /crash-8.0.0.tar.gz /crash-8.0.1.tar.gz /crash-8.0.2.tar.gz +/crash-8.0.3.tar.gz /gdb-7.6.tar.gz /gdb-10.2.tar.gz diff --git a/0001-gdb-Fix-an-assertion-failure-in-the-gdb-s-copy_type.patch b/0001-gdb-Fix-an-assertion-failure-in-the-gdb-s-copy_type.patch deleted file mode 100644 index a227f44..0000000 --- a/0001-gdb-Fix-an-assertion-failure-in-the-gdb-s-copy_type.patch +++ /dev/null @@ -1,75 +0,0 @@ -From d941266da5fb9c386128a180f39281ec9d4aa242 Mon Sep 17 00:00:00 2001 -From: Lianbo Jiang -Date: Mon, 20 Feb 2023 15:57:04 +0800 -Subject: [PATCH] gdb: Fix an assertion failure in the gdb's copy_type() - -This is a backported patch from gdb. Without the patch, the following -crash command may abort due to an assertion failure in the gdb's -copy_type(): - - crash> px __per_cpu_start:0 - gdbtypes.c:5505: internal-error: type* copy_type(const type*): Assertion `TYPE_OBJFILE_OWNED (type)' failed. - A problem internal to GDB has been detected, - further debugging may prove unreliable. - Quit this debugging session? (y or n) - -The gdb commit 8e2da1651879 ("Fix assertion failure in copy_type") -solved the current issue. - -Reported-by: Buland Kumar Singh -Signed-off-by: Lianbo Jiang ---- - gdb-10.2.patch | 40 ++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 40 insertions(+) - -diff --git a/gdb-10.2.patch b/gdb-10.2.patch -index 91edfb338445..8c3b5a7fdf77 100644 ---- a/gdb-10.2.patch -+++ b/gdb-10.2.patch -@@ -1737,3 +1737,43 @@ exit 0 - struct field *nextfield; - short nfields; - struct type *typedef_type, *target_type; -+--- gdb-10.2/gdb/gdbtypes.c.orig -++++ gdb-10.2/gdb/gdbtypes.c -+@@ -5492,27 +5492,25 @@ copy_type_recursive (struct objfile *objfile, -+ } -+ -+ /* Make a copy of the given TYPE, except that the pointer & reference -+- types are not preserved. -+- -+- This function assumes that the given type has an associated objfile. -+- This objfile is used to allocate the new type. */ -++ types are not preserved. */ -+ -+ struct type * -+ copy_type (const struct type *type) -+ { -+- struct type *new_type; -+- -+- gdb_assert (TYPE_OBJFILE_OWNED (type)); -++ struct type *new_type = alloc_type_copy (type); -+ -+- new_type = alloc_type_copy (type); -+ TYPE_INSTANCE_FLAGS (new_type) = TYPE_INSTANCE_FLAGS (type); -+ TYPE_LENGTH (new_type) = TYPE_LENGTH (type); -+ memcpy (TYPE_MAIN_TYPE (new_type), TYPE_MAIN_TYPE (type), -+ sizeof (struct main_type)); -+ if (type->main_type->dyn_prop_list != NULL) -+- new_type->main_type->dyn_prop_list -+- = copy_dynamic_prop_list (&TYPE_OBJFILE (type) -> objfile_obstack, -+- type->main_type->dyn_prop_list); -++ { -++ struct obstack *storage = (TYPE_OBJFILE_OWNED (type) -++ ? &TYPE_OBJFILE (type)->objfile_obstack -++ : gdbarch_obstack (TYPE_OWNER (type).gdbarch)); -++ new_type->main_type->dyn_prop_list -++ = copy_dynamic_prop_list (storage, type->main_type->dyn_prop_list); -++ } -+ -+ return new_type; -+ } -+ --- -2.37.1 - diff --git a/0002-Fix-for-bt-command-printing-bogus-exception-frame-wa.patch b/0002-Fix-for-bt-command-printing-bogus-exception-frame-wa.patch deleted file mode 100644 index c8bac89..0000000 --- a/0002-Fix-for-bt-command-printing-bogus-exception-frame-wa.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 92de7c34b1f910abff4d77522f74454ea0263a90 Mon Sep 17 00:00:00 2001 -From: Lianbo Jiang -Date: Mon, 13 Feb 2023 11:12:12 +0800 -Subject: [PATCH] Fix for "bt" command printing "bogus exception frame" warning - -Currently, the "bt" command may print a bogus exception frame -and the remaining frame will be truncated on x86_64 when using the -"virsh send-key KEY_LEFTALT KEY_SYSRQ KEY_C" command -to trigger a panic from the KVM host. For example: - - crash> bt - PID: 0 TASK: ffff9e7a47e32f00 CPU: 3 COMMAND: "swapper/3" - #0 [ffffba7900118bb8] machine_kexec at ffffffff87e5c2c7 - #1 [ffffba7900118c08] __crash_kexec at ffffffff87f9500d - #2 [ffffba7900118cd0] panic at ffffffff87edfff9 - #3 [ffffba7900118d50] sysrq_handle_crash at ffffffff883ce2c1 - ... - #16 [ffffba7900118fd8] handle_edge_irq at ffffffff87f559f2 - #17 [ffffba7900118ff0] asm_call_on_stack at ffffffff88800fa2 - --- --- - #18 [ffffba790008bda0] asm_call_on_stack at ffffffff88800fa2 - RIP: ffffffffffffffff RSP: 0000000000000124 RFLAGS: 00000003 - RAX: 0000000000000000 RBX: 0000000000000001 RCX: 0000000000000000 - RDX: ffffffff88800c1e RSI: 0000000000000000 RDI: 0000000000000000 - RBP: 0000000000000001 R8: 0000000000000000 R9: 0000000000000000 - R10: 0000000000000000 R11: ffffffff88760555 R12: ffffba790008be08 - R13: ffffffff87f18002 R14: ffff9e7a47e32f00 R15: ffff9e7bb6198e00 - ORIG_RAX: 0000000000000000 CS: 0003 SS: 0000 - bt: WARNING: possibly bogus exception frame - crash> - -The following related kernel commits cause the current issue, crash -needs to adjust the value of irq_eframe_link. - -Related kernel commits: -[1] v5.8: 931b94145981 ("x86/entry: Provide helpers for executing on the irqstack") -[2] v5.8: fa5e5c409213 ("x86/entry: Use idtentry for interrupts") -[3] v5.12: 52d743f3b712 ("x86/softirq: Remove indirection in do_softirq_own_stack()") - -Signed-off-by: Lianbo Jiang -Signed-off-by: Kazuhito Hagio ---- - x86_64.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/x86_64.c b/x86_64.c -index 7a5d6f050c89..5b671bd97775 100644 ---- a/x86_64.c -+++ b/x86_64.c -@@ -3938,6 +3938,11 @@ in_exception_stack: - if (irq_eframe) { - bt->flags |= BT_EXCEPTION_FRAME; - i = (irq_eframe - bt->stackbase)/sizeof(ulong); -+ if (symbol_exists("asm_common_interrupt")) { -+ i -= 1; -+ up = (ulong *)(&bt->stackbuf[i*sizeof(ulong)]); -+ bt->instptr = *up; -+ } - x86_64_print_stack_entry(bt, ofp, level, i, bt->instptr); - bt->flags &= ~(ulonglong)BT_EXCEPTION_FRAME; - cs = x86_64_exception_frame(EFRAME_PRINT|EFRAME_CS, 0, -@@ -6521,6 +6526,14 @@ x86_64_irq_eframe_link_init(void) - else - return; - -+ if (symbol_exists("asm_common_interrupt")) { -+ if (symbol_exists("asm_call_on_stack")) -+ machdep->machspec->irq_eframe_link = -64; -+ else -+ machdep->machspec->irq_eframe_link = -32; -+ return; -+ } -+ - if (THIS_KERNEL_VERSION < LINUX(2,6,9)) - return; - --- -2.37.1 - diff --git a/0003-Fix-for-bt-command-unnecessarily-printing-an-excepti.patch b/0003-Fix-for-bt-command-unnecessarily-printing-an-excepti.patch deleted file mode 100644 index 266e3dc..0000000 --- a/0003-Fix-for-bt-command-unnecessarily-printing-an-excepti.patch +++ /dev/null @@ -1,78 +0,0 @@ -From e0e6e4a7ee03b3d00b50a9e4db2f2ea6f7da0da3 Mon Sep 17 00:00:00 2001 -From: Lianbo Jiang -Date: Wed, 15 Feb 2023 16:24:57 +0800 -Subject: [PATCH] Fix for "bt" command unnecessarily printing an exception - frame - -Kernel commit 7d65f4a65532 ("irq: Consolidate do_softirq() arch overriden -implementations") renamed the call_softirq to do_softirq_own_stack, and -there is no exception frame also when coming from do_softirq_own_stack. -Without the patch, crash may unnecessarily output an exception frame with -a warning as below: - - crash> foreach bt - ... - PID: 0 TASK: ffff914f820a8000 CPU: 25 COMMAND: "swapper/25" - #0 [fffffe0000504e48] crash_nmi_callback at ffffffffa665d763 - #1 [fffffe0000504e50] nmi_handle at ffffffffa662a423 - #2 [fffffe0000504ea8] default_do_nmi at ffffffffa6fe7dc9 - #3 [fffffe0000504ec8] do_nmi at ffffffffa662a97f - #4 [fffffe0000504ef0] end_repeat_nmi at ffffffffa70015e8 - [exception RIP: clone_endio+172] - RIP: ffffffffc005c1ec RSP: ffffa1d403d08e98 RFLAGS: 00000246 - RAX: 0000000000000000 RBX: ffff915326fba230 RCX: 0000000000000018 - RDX: ffffffffc0075400 RSI: 0000000000000000 RDI: ffff915326fba230 - RBP: ffff915326fba1c0 R8: 0000000000001000 R9: ffff915308d6d2a0 - R10: 000000a97dfe5e10 R11: ffffa1d40038fe98 R12: ffff915302babc40 - R13: ffff914f94360000 R14: 0000000000000000 R15: 0000000000000000 - ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018 - --- --- - #5 [ffffa1d403d08e98] clone_endio at ffffffffc005c1ec [dm_mod] - #6 [ffffa1d403d08ed0] blk_update_request at ffffffffa6a96954 - #7 [ffffa1d403d08f10] scsi_end_request at ffffffffa6c9b968 - #8 [ffffa1d403d08f48] scsi_io_completion at ffffffffa6c9bb3e - #9 [ffffa1d403d08f90] blk_complete_reqs at ffffffffa6aa0e95 - #10 [ffffa1d403d08fa0] __softirqentry_text_start at ffffffffa72000dc - #11 [ffffa1d403d08ff0] do_softirq_own_stack at ffffffffa7000f9a - --- --- - #12 [ffffa1d40038fe70] do_softirq_own_stack at ffffffffa7000f9a - [exception RIP: unknown or invalid address] - RIP: 0000000000000000 RSP: 0000000000000000 RFLAGS: 00000000 - RAX: ffffffffa672eae5 RBX: ffffffffa83b34e0 RCX: ffffffffa672eb12 - RDX: 0000000000000010 RSI: 8b7d6c8869010c00 RDI: 0000000000000085 - RBP: 0000000000000286 R8: ffff914f820a8000 R9: ffffffffa67a94e0 - R10: 0000000000000286 R11: ffffffffa66fb4c5 R12: ffffffffa67a898b - R13: 0000000000000000 R14: fffffffffffffff8 R15: ffffffffa67a1e68 - ORIG_RAX: 0000000000000000 CS: 0000 SS: ffffffffa672edff - bt: WARNING: possibly bogus exception frame - #13 [ffffa1d40038ff30] start_secondary at ffffffffa665fa2c - #14 [ffffa1d40038ff50] secondary_startup_64_no_verify at ffffffffa6600116 - ... - -Reported-by: Marco Patalano -Signed-off-by: Lianbo Jiang ---- - x86_64.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/x86_64.c b/x86_64.c -index 5b671bd97775..6cac3936b33d 100644 ---- a/x86_64.c -+++ b/x86_64.c -@@ -3825,10 +3825,11 @@ in_exception_stack: - up -= 1; - bt->instptr = *up; - /* -- * No exception frame when coming from call_softirq. -+ * No exception frame when coming from do_softirq_own_stack -+ * or call_softirq. - */ - if ((sp = value_search(bt->instptr, &offset)) && -- STREQ(sp->name, "call_softirq")) -+ (STREQ(sp->name, "do_softirq_own_stack") || STREQ(sp->name, "call_softirq"))) - irq_eframe = 0; - bt->frameptr = 0; - done = FALSE; --- -2.37.1 - diff --git a/crash-8.0.2_build.patch b/crash-8.0.3_build.patch similarity index 91% rename from crash-8.0.2_build.patch rename to crash-8.0.3_build.patch index 898d09c..bb09e2b 100644 --- a/crash-8.0.2_build.patch +++ b/crash-8.0.3_build.patch @@ -1,5 +1,5 @@ ---- crash-8.0.2/Makefile.orig -+++ crash-8.0.2/Makefile +--- crash-8.0.3/Makefile.orig ++++ crash-8.0.3/Makefile @@ -204,7 +204,7 @@ GDB_FLAGS= # TARGET_CFLAGS will be configured automatically by configure TARGET_CFLAGS= @@ -18,8 +18,8 @@ @echo "../../${PROGRAM} ../../${PROGRAM}lib.a" > ${GDB}/gdb/mergeobj @rm -f ${PROGRAM} @if [ ! -f ${GDB}/config.status ]; then \ ---- crash-8.0.2/configure.c.orig -+++ crash-8.0.2/configure.c +--- crash-8.0.3/configure.c.orig ++++ crash-8.0.3/configure.c @@ -810,7 +810,8 @@ build_configure(struct supported_gdb_version *sp) fprintf(fp2, "%s\n", sp->GDB); sprintf(target_data.gdb_version, "%s", &sp->GDB[4]); diff --git a/crash.spec b/crash.spec index ed45f85..2217bc9 100644 --- a/crash.spec +++ b/crash.spec @@ -3,8 +3,8 @@ # Summary: Kernel analysis utility for live systems, netdump, diskdump, kdump, LKCD or mcore dumpfiles Name: crash -Version: 8.0.2 -Release: 2%{?dist} +Version: 8.0.3 +Release: 1%{?dist} License: GPLv3 Source0: https://github.com/crash-utility/crash/archive/crash-%{version}.tar.gz Source1: http://ftp.gnu.org/gnu/gdb/gdb-10.2.tar.gz @@ -18,10 +18,7 @@ Requires: binutils Provides: bundled(libiberty) Provides: bundled(gdb) = 10.2 Patch0: lzo_snappy_zstd.patch -Patch1: crash-8.0.2_build.patch -Patch2: 0001-gdb-Fix-an-assertion-failure-in-the-gdb-s-copy_type.patch -Patch3: 0002-Fix-for-bt-command-printing-bogus-exception-frame-wa.patch -Patch4: 0003-Fix-for-bt-command-unnecessarily-printing-an-excepti.patch +Patch1: crash-8.0.3_build.patch %description The core analysis suite is a self-contained tool that can be used to @@ -42,10 +39,7 @@ offered by Mission Critical Linux, or the LKCD kernel patch. %prep %setup -n %{name}-%{version} -q %patch0 -p1 -b lzo_snappy_zstd.patch -%patch1 -p1 -b crash-8.0.2_build.patch -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 +%patch1 -p1 -b crash-8.0.3_build.patch %build @@ -72,6 +66,9 @@ cp -p defs.h %{buildroot}%{_includedir}/crash %{_includedir}/* %changelog +* Thu May 04 2023 Lianbo Jiang - 8.0.3-1 +- Rebase to upstream crash 8.0.3 + * Mon Feb 20 2023 Lianbo Jiang - 8.0.2-2 - Fix an assertion failure in the gdb's copy_type() - Fix for "bt" command printing "bogus exception frame" warning diff --git a/lzo_snappy_zstd.patch b/lzo_snappy_zstd.patch index cfeb674..8d50246 100644 --- a/lzo_snappy_zstd.patch +++ b/lzo_snappy_zstd.patch @@ -1,5 +1,5 @@ ---- crash-8.0.2/Makefile.orig -+++ crash-8.0.2/Makefile +--- crash-8.0.3/Makefile.orig ++++ crash-8.0.3/Makefile @@ -256,7 +256,7 @@ all: make_configure gdb_merge: force @if [ ! -f ${GDB}/README ]; then \ @@ -9,8 +9,8 @@ @echo "../../${PROGRAM} ../../${PROGRAM}lib.a" > ${GDB}/gdb/mergeobj @rm -f ${PROGRAM} @if [ ! -f ${GDB}/config.status ]; then \ ---- crash-8.0.2/diskdump.c.orig -+++ crash-8.0.2/diskdump.c +--- crash-8.0.3/diskdump.c.orig ++++ crash-8.0.3/diskdump.c @@ -23,6 +23,9 @@ * GNU General Public License for more details. */ diff --git a/sources b/sources index ef38a0b..29d88c0 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (crash-8.0.2.tar.gz) = 9ff24d1206e9376e83690f76c817a48a68ff6adce677fad70335a73550a59c9af6e4753c1199f22eafa60c137156313244bbf98ed01bc2b066f41d324738ef6b +SHA512 (crash-8.0.3.tar.gz) = 1ce7fda89274051cea02a049a674f2ca43fc02e00121f951af0d4c23c7b74cc79949ec376bb6737f82b95fec0cbe495b53a09df7e5f1f31ee5a829c1d53d0ba0 SHA512 (gdb-10.2.tar.gz) = aa89caf47c1c84366020377d47e7c51ddbc48e5b7686f244e38797c8eb88411cf57fcdc37eb669961efb41ceeac4181747f429625fd1acce7712cb9a1fea9c41