Hello all,
I built the kernel 6.14-rc1 on Fedora 41 and the crash utility doesn't
work as expected. Quickly investigating the issue, the commit below
from last month changes a field in the struct dentry and it seems to
be the reason for the errors I am seeing.
dcache: back inline names with a struct-wrapped array of unsigned long
https://github.com/torvalds/linux/commit/58cf9c383c5c686668082f83f7e0f3e0...
The error is the following:
crash> vtop -c 1224 0x41400000
VIRTUAL PHYSICAL
41400000 51144000
PGD: 24438000 => dfaf067
PUD: dfaf008 => 109fd067
PMD: 109fd050 => fc07067
PTE: fc07000 => 8000000051144867
PAGE: 51144000
PTE PHYSICAL FLAGS
8000000051144867 51144000 (PRESENT|RW|USER|ACCESSED|DIRTY|NX)
VMA START END FLAGS FILE
vtop: invalid structure member offset: dentry_d_iname
FILE: filesys.c LINE: 3242 FUNCTION: get_pathname_component()
BFD: /usr/bin/crash: unknown type [0x13] section `.relr.dyn'
[/usr/bin/crash] error trace: 556181a34180 => 556181a331c5 =>
556181a76b10 => 556181b4adab
BFD: /usr/bin/crash: unknown type [0x13] section `.relr.dyn'
vtop: invalid structure member offset: dentry_d_iname
FILE: filesys.c LINE: 3242 FUNCTION: get_pathname_component()
crash>
I changed the field name and it seems to work now without errors, but
I don't know the crash source code and didn't check the commit in
details or even other ones applied to 6.14-rc1 to make sure there's
not more problems for crash. I'd say there might be more changes to be
done to really fix the potential issues. The command I was using and
resulted in error works just fine now, but as I said, there might be
more changes in order to really support the 6.14 kernel.
$ sudo ./crash_modified/crash
~/work/kernels/packages/linux_upstream_6.14_rc1/vmlinux
crash 8.0.6++
Copyright (C) 2002-2025 Red Hat, Inc.
Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation
Copyright (C) 1999-2006 Hewlett-Packard Co
Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited
Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.
Copyright (C) 2005, 2011, 2020-2024 NEC Corporation
Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
Copyright (C) 2015, 2021 VMware, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. Enter "help copying" to see the conditions.
This program has absolutely no warranty. Enter "help warranty" for details.
GNU gdb (GDB) 10.2
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <
http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
Find the GDB manual and other documentation resources online at:
<
http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
KERNEL: /home/user/work/kernels/packages/linux_upstream_6.14_rc1/vmlinux
DUMPFILE: /proc/kcore
CPUS: 4
DATE: Wed Dec 31 21:00:00 -03 1969
UPTIME: 07:44:59
LOAD AVERAGE: 0.40, 0.11, 0.03
TASKS: 306
NODENAME: fedoraserver41research
RELEASE: 6.14.0-rc1
VERSION: #1 SMP PREEMPT_DYNAMIC Wed Feb 12 00:07:46 -03 2025
MACHINE: x86_64 (2995 Mhz)
MEMORY: 2 GB
PID: 47350
COMMAND: "crash"
TASK: ffff88801eeb8000 [THREAD_INFO: ffff88801eeb8000]
CPU: 3
STATE: TASK_RUNNING (ACTIVE)
crash> vtop -c 1224 0x41400000
VIRTUAL PHYSICAL
41400000 51144000
PGD: 24438000 => dfaf067
PUD: dfaf008 => 109fd067
PMD: 109fd050 => fc07067
PTE: fc07000 => 8000000051144867
PAGE: 51144000
PTE PHYSICAL FLAGS
8000000051144867 51144000 (PRESENT|RW|USER|ACCESSED|DIRTY|NX)
VMA START END FLAGS FILE
ffff888006b52b00 41400000 42800000 8100073
PAGE PHYSICAL MAPPING INDEX CNT FLAGS
ffffea0001445100 51144000 ffff88801440f361 41400 1 fffffd0020828
uptodate,lru,owner_2,swapbacked
crash> vtop -c 1224 7f058fbc2000
VIRTUAL PHYSICAL
7f058fbc2000 3f278000
PGD: 244387f0 => 8955067
PUD: 89550b0 => 997b067
PMD: 997b3e8 => 9b69067
PTE: 9b69e10 => 800000003f278025
PAGE: 3f278000
PTE PHYSICAL FLAGS
800000003f278025 3f278000 (PRESENT|USER|ACCESSED|NX)
VMA START END FLAGS FILE
ffff88800ea17b00 7f058fbc2000 7f058fbc3000 8000071 /usr/lib64/libc.so.6
PAGE PHYSICAL MAPPING INDEX CNT FLAGS
ffffea0000fc9e00 3f278000 ffff88800bf099c8 0 226 fffffe600426c
referenced,uptodate,lru,workingset,private,head
crash>
The patch:
$ git diff crash/filesys.c crash_modified/filesys.c
diff --git a/crash/filesys.c b/crash_modified/filesys.c
index 406ebb2..4759fa2 100644
--- a/crash/filesys.c
+++ b/crash_modified/filesys.c
@@ -2050,7 +2050,7 @@ vfs_init(void)
MEMBER_OFFSET_INIT(dentry_d_parent, "dentry", "d_parent");
MEMBER_OFFSET_INIT(dentry_d_covers, "dentry", "d_covers");
MEMBER_OFFSET_INIT(dentry_d_name, "dentry", "d_name");
- MEMBER_OFFSET_INIT(dentry_d_iname, "dentry", "d_iname");
+ MEMBER_OFFSET_INIT(dentry_d_iname, "dentry", "d_shortname");
MEMBER_OFFSET_INIT(dentry_d_sb, "dentry", "d_sb");
MEMBER_OFFSET_INIT(inode_i_mode, "inode", "i_mode");
MEMBER_OFFSET_INIT(inode_i_op, "inode", "i_op");
Anyway, I am bringing this issue to the list so you people can
properly implement support for the 6.14 kernel. Thank you!
Anderson Nascimento