On Fri, Jun 2, 2023 at 1:07 PM HAGIO KAZUHITO(萩尾 一仁) <k-hagio...@nec.com>
wrote:

> On 2023/06/02 13:49, lijiang wrote:
> > On Fri, Jun 2, 2023 at 10:18 AM HAGIO KAZUHITO(萩尾 一仁) <
> k-hagio...@nec.com>
> > wrote:
> >
> >> On 2023/05/30 21:30, lijiang wrote:
> >>> On Mon, May 29, 2023 at 9:03 AM HAGIO KAZUHITO(萩尾 一仁) <
> >> k-hagio...@nec.com>
> >>> wrote:
> >>>
> >>>>>
> >>>>> +                                       for (j = MOD_TEXT; j <
> >>>>>> MOD_MEM_NUM_TYPES; j++) {
> >>>>>> +
>  lm->load_symtable[j] =
> >>>>>> NULL;
> >>>>>> +                                               lm->load_symend[j] =
> >>>> NULL;
> >>>>>> +                                       }
> >>>>>> +                               } else { /* somehow this function
> runs
> >>>> for
> >>>>>> unloaded modules */
> >>>>>>
> >>>>>
> >>>>> Could you please explain why it may get into the "else" code path?
> And
> >>>> why
> >>>>> do we need to handle this situation for now? But not needed before
> the
> >>>>> module memory changes.
> >>>>
> >>>> This path is used by "mod -d|-D" and reinit_modules() for unloaded
> >> modules.
> >>>>
> >>>> The old procedure always does the cleanup and reinstall of the hash
> >>>> entries, so kept it as it is.
> >>>>
> >>>
> >>> I tried to add some debug information in the above code path, but did
> not
> >>> observe any output(via the mod -d/-D). It's strange.
> >>
> >> With this change,
> >>
> >> --- a/symbols.c
> >> +++ b/symbols.c
> >> @@ -13951,6 +13951,7 @@ delete_load_module(ulong base_addr)
> >>                                                   lm->load_symend[j] =
> NULL;
> >>                                           }
> >>                                   } else { /* somehow this function runs
> >> for unloaded modules */
> >> +                                       fprintf(fp, "in the else block
> >> (-D)\n");
> >>                                           for (j = MOD_TEXT; j <
> >> MOD_MEM_NUM_TYPES; j++) {
> >>                                                   if (!lm->symtable[j])
> >>                                                           continue;
> >> @@ -14016,6 +14017,7 @@ delete_load_module(ulong base_addr)
> >>                                                   lm->load_symend[j] =
> NULL;
> >>                                           }
> >>                                   } else { /* somehow this function runs
> >> for unloaded modules */
> >> +                                       fprintf(fp, "in the else block
> >> (-d)\n");
> >>                                           for (j = MOD_TEXT; j <
> >> MOD_MEM_NUM_TYPES; j++) {
> >>                                                   if (!lm->symtable[j])
> >>                                                           continue;
> >>
> >> These should be printed:
> >>
> >> crash-6.4> mod -s dm_mod
> >>        MODULE       NAME                     TEXT_BASE         SIZE
> OBJECT
> >> FILE
> >> ffffffffc042fd00  dm_mod                ffffffffc0418000   237568
> >> dm-mod.ko
> >> crash-6.4> mod -d dm_mod
> >> crash-6.4> mod -d dm_mod
> >>
> >
> > Ah, I know why I did not see any output(via the mod -d/-D), because I
> only
> > ran the "mod -d/-D" *once*. And for now I can see the debug information
> > after running the mod -d/-D *twice*.
>
> ok, good.
>
> but I tested it without the clean-up and re-install, it looked ok.
> So I'm thinking to remove them.
>

You are right, Kazu. That is also my thoughts.

Thanks
Lianbo


> Thanks,
> Kazu
>
> >
> > Thank you for the explanation, Kazu.
> >
> >
> >> in the else block (-d)
> >> crash-6.4> mod -d dm_log
> >> in the else block (-d)
> >> crash-6.4> mod -D | head
> >> in the else block (-D)
> >> in the else block (-D)
> >> in the else block (-D)
> >> in the else block (-D)
> >> in the else block (-D)
> >> in the else block (-D)
> >> in the else block (-D)
> >> in the else block (-D)
> >> in the else block (-D)
> >> in the else block (-D)
> >>
> >> Thanks,
> >> Kazu
> >>
--
Crash-utility mailing list
Crash-utility@redhat.com
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to