Hi, Kazu and John 在 2021年01月25日 07:18, HAGIO KAZUHITO(萩尾 一仁) 写道: > Hi Lianbo, > > -----Original Message----- >>> When crash runs with -s option, SIZE(taint_flag) and OFFSET(tnt_false) >>> are not set during initialization. If the "mod -t" option is executed, >>> it sets the former but does not set the latter. After that, the "sys" >>> command uses OFFSET(tnt_false) without setting it, because it checks >>> only if SIZE(taint_flag) is set. >>> >>> Without the patch, the "sys [-t]" and "mod -S" options after "mod -t" >>> option fail with the error message: >>> >> Hmm, I also ran into a similar issue with an old vmcore, that can be reproduced >> with the following steps: >> >> crash> history >> [1] mod -S 3.10.0-957.el7.x86_64 >> [2] mod -s dm_service_time >> [3] set scope st_create >> [4] mod -d dm_service_time >> [5] mod -sr dm_service_time >> [6] set scope st_create >> [7] sys >> [8] set scope st_create >> >> And after the step[7] "sys" command, the step[8] will definitely fail. But step[6] >> is successful before the "sys" command. >> >> Seems that it should be another issue. > > Do you mean the following error? > ... > crash> set scope st_create > scope: ffffffffc0918270 (st_create) > crash> sys > KERNEL: /usr/lib/debug/lib/modules/3.10.0-1127.el7.x86_64/vmlinux > DUMPFILE: /dev/crash > ... > crash> set scope st_create > set: gdb cannot find text block for address: st_create > Usually, it can work with the --readnow(as a workaround) for the bz1811208 John mentioned. But in my steps[1-8], it won't work. This is another bug(bz1839850) > This looks strange but different from the issue this patch fixes. Indeed, they are different issues. So for the following patch: [PATCH] Fix "sys [-t]|mod -S" after "mod -t" when crash runs with -s option Acked-by: Lianbo Jiang <lijiang@xxxxxxxxxx> > This fixes the following error: > > # crash -s > > WARNING: kernel relocated [340MB]: patching 87167 gdb minimal_symbol values > crash> mod -t > no tainted modules > crash> sys > > sys: invalid structure member offset: tnt_false > FILE: kernel.c LINE: 10838 FUNCTION: show_kernel_taints_v4_10() > > [/usr/bin/crash] error trace: 469008 => 4f4b29 => 4d7e19 => 5376d2 > > 5376d2: OFFSET_verify+130 > 4d7e19: (undetermined) > 4f4b29: cmd_sys+121 > 469008: exec_command+760 > > sys: invalid structure member offset: tnt_false > FILE: kernel.c LINE: 10838 FUNCTION: show_kernel_taints_v4_10() > > My test script runs with this command order.. > > Thanks, > Kazu > >> >> Thanks. >> Lianbo >> >>> sys: invalid structure member offset: tnt_false >>> FILE: kernel.c LINE: 11203 FUNCTION: show_kernel_taints_v4_10() >>> >>> Signed-off-by: Kazuhito Hagio <k-hagio-ab@xxxxxxx> >>> --- >>> kernel.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/kernel.c b/kernel.c >>> index 272e0d8751cf..5fcd86575be5 100644 >>> --- a/kernel.c >>> +++ b/kernel.c >>> @@ -11160,7 +11160,8 @@ show_kernel_taints_v4_10(char *buf, int verbose) >>> ulong tainted_mask, *tainted_mask_ptr; >>> struct syment *sp; >>> >>> - if (!VALID_STRUCT(taint_flag)) { >>> + if (!(VALID_STRUCT(taint_flag) && >>> + VALID_MEMBER(tnt_true) && VALID_MEMBER(tnt_false))) { >>> STRUCT_SIZE_INIT(taint_flag, "taint_flag"); >>> MEMBER_OFFSET_INIT(tnt_true, "taint_flag", "true"); >>> MEMBER_OFFSET_INIT(tnt_false, "taint_flag", "false"); >>> -- 2.18.4 > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility