On Mon, 30 Mar 2026, Tao Liu wrote:
1) crash> struct -F sched.h task_struct
struct: invalid data structure reference: task_struct
Did I use the -F option incorrectly?
Yes. The -F argument should be a .c file, not a .h file. Debug info
(DWARF) organizes symbols by compilation unit, which corresponds to .c
files. Header files are not compilation units and do not appear as
independent entries in the symtab. So the correct usage is:
crash> struct task_struct -F sched.c
2) The -F option seems to suffer from a performance issue.
Correct. The overhead comes from expand_all_symtabs(), which is called
to ensure all compilation units are visible before filename matching.
This is expensive on large vmlinux.
3) Could you share your vmcore & vmlinux?
I cannot share the vmcore directly. To reproduce, build a 6.18 arm64
kernel with CONFIG_ARM_SMMU=y, CONFIG_ARM_SMMU_V3=y and
CONFIG_DEBUG_INFO=y -- the arm_smmu_device duplicate will be present.
Regarding the debuginfod prompt: it is a GDB built-in feature unrelated
to -F. The default answer is 'n' -- just press Enter to skip it. It can
be disabled at build time, but keeping it enabled is recommended as it
allows automatic debug info fetching for open-source projects.
Signed-off-by: chahuan <chahuan(a)qti.qualcomm.com>