On Thu, Sep 29, 2022 at 9:10 AM HAGIO KAZUHITO(萩尾 一仁) <k-hagio...@nec.com>
wrote:

> On 2022/09/27 17:56, lijiang wrote:
> > On Tue, Sep 27, 2022 at 4:27 PM HAGIO KAZUHITO(萩尾 一仁) <
> k-hagio...@nec.com>
> > wrote:
> >
> >> cc Alexey, reverting this affects VMware folks.
> >>
> >> On 2022/09/27 15:27, Lianbo Jiang wrote:
> >>> This reverts commit 2f967fb5ebd737ce5eadba462df35935122e8865. John
> >>> Pittman reports that it causes a regression issue on the old Vmware
> >>> vmcore as below:
> >>>
> >>>     crash> set scope dm_table_create
> >>>     set: attempting to find/load "dm_mod" module debuginfo
> >>>          MODULE       NAME                      BASE           SIZE
> >> OBJECT FILE
> >>>     ffffffffa0012dc0  dm_mod             ffffffffa0000000   102823
> >> /home/2.6.32-754.35.1.el6.x86_64/kernel/drivers/md/dm-mod.ko.debug
> >>>     scope: ffffffffa0006cf0 (dm_table_create)
> >>>     crash> whatis struct dm_table
> >>>     struct dm_table {
> >>>         uint64_t features;
> >>>         struct mapped_device *md;
> >>>         unsigned int type;
> >>>         unsigned int depth;
> >>>         unsigned int counts[16];
> >>>         sector_t *index[16];
> >>>         unsigned int num_targets;
> >>>         unsigned int num_allocated;
> >>>         sector_t *highs;
> >>>         struct dm_target *targets;
> >>>         struct target_type *immutable_target_type;
> >>>         unsigned int integrity_supported : 1;
> >>>         unsigned int singleton : 1;
> >>>         fmode_t mode;
> >>>         struct list_head devices;
> >>>         void (*event_fn)(void *);
> >>>         void *event_context;
> >>>         struct dm_md_mempools *mempools;
> >>>         struct list_head target_callbacks;
> >>>     }
> >>>     SIZE: 312
> >>>     crash> whatis _name_buckets        --->| After using the whatis
> >> _name_buckets command,
> >>>     struct list_head _name_buckets[64];    |
> >>>     crash> whatis struct dm_table      <---| it won't show the contents
> >> of the dm_table struct.
> >>>     struct dm_table {
> >>>         int undefined__;
> >>>     }
> >>>     SIZE: 312
> >>>     crash>
> >>>
> >>> With the patch, this issue disappeared.
> >> At first glance, I did not find any part of the patch that can cause
> >> the issue.  Do you have any detailed information?
> >>
> >>
> > This issue is observed on an old Vmware vmcore, and looks like a
> regression
> > issue.
>
> Is the vmcore a .vmss file? or one captured by kdump?
>
>
It's a .vmss file.


> > I tried to dig into the detail, the raw_supply() operation may affect the
> > gdb behavior, it
> > will store the register values to a cache in the gdb.
> >
> > So far I haven't got a good solution, let's see if Alex has a better way
> to
> > fix it, that would be welcome. Any thoughts?
>
> I suspected that the issue might depend on the debuginfo, but could not
> reproduce it with the same 2.6.32-754.35.1.el6.x86_64 vmlinux.
>
> but even with reverting the patch, I found that "set scope 0" does not
> work well, though not sure whether it's related to the issue.
>
>
There may be a different issue, the 'set scope 0' can work in my case.  Can
you try the '-r' option to work around your issue?

crash-dev> mod -s dm_mod
>       MODULE       NAME                     BASE          SIZE  OBJECT FILE
> ffffffffa0012dc0  dm_mod             ffffffffa0000000  102823
> /home/vmcore/2022-09-28-rhel610-754.35.1.el6/usr/lib/debug/lib/modules/2.6.32-754.35.1.el6.x86_64/kernel/drivers/md/dm-mod.ko.debug
> crash-dev> struct dm_table
> struct dm_table {
>      int undefined__;
> }
> SIZE: 4
> crash-dev> set scope dm_table_create
> scope: ffffffffa0006cf0 (dm_table_create)
> crash-dev> struct dm_table
> struct dm_table {
>      uint64_t features;
>      struct mapped_device *md;
>      unsigned int type;
>      unsigned int depth;
>      unsigned int counts[16];
>      sector_t *index[16];
>      unsigned int num_targets;
>      unsigned int num_allocated;
>      sector_t *highs;
>      struct dm_target *targets;
>      struct target_type *immutable_target_type;
>      unsigned int integrity_supported : 1;
>      unsigned int singleton : 1;
>      fmode_t mode;
>      struct list_head devices;
>      void (*event_fn)(void *);
>      void *event_context;
>      struct dm_md_mempools *mempools;
>      struct list_head target_callbacks;
> }
> SIZE: 312
> crash-dev> set scope 0       <<--- unset the scope
> scope: 0 (not set)
> crash-dev> struct dm_table
> struct dm_table {
>      uint64_t features;       <<--- but, same as above
>      struct mapped_device *md;
>      unsigned int type;
>      unsigned int depth;
>      unsigned int counts[16];
>      sector_t *index[16];
>      unsigned int num_targets;
>      unsigned int num_allocated;
>      sector_t *highs;
>      struct dm_target *targets;
>      struct target_type *immutable_target_type;
>      unsigned int integrity_supported : 1;
>      unsigned int singleton : 1;
>      fmode_t mode;
>      struct list_head devices;
>      void (*event_fn)(void *);
>      void *event_context;
>      struct dm_md_mempools *mempools;
>      struct list_head target_callbacks;
> }
> SIZE: 312
>
>
> It looks like gdb-10.2 has some memory, other than "crash_text_scope"
> in gdb-10.2/gdb/symtab.c.
>
>
The behavior is different between the gdb-10.2 and gdb-7.6, we had
encountered several cases. But I'm not sure which one may affect this issue.


> On the other hand, with crash-7.3.2 "set scope 0" works as expected.
>
> crash-7.3.2> mod -s dm_mod
>       MODULE       NAME                     BASE          SIZE  OBJECT FILE
> ffffffffa0012dc0  dm_mod             ffffffffa0000000  102823
> /home/vmcore/2022-09-28-rhel610-754.35.1.el6/usr/lib/debug/lib/modules/2.6.32-754.35.1.el6.x86_64/kernel/drivers/md/dm-mod.ko.debug
> crash-7.3.2> struct dm_table
> struct dm_table {
>      int undefined__;
> }
> SIZE: 4
> crash-7.3.2> set scope dm_table_create
> scope: ffffffffa0006cf0 (dm_table_create)
> crash-7.3.2> struct dm_table
> struct dm_table {
>      uint64_t features;
>      struct mapped_device *md;
>      unsigned int type;
>      unsigned int depth;
>      unsigned int counts[16];
>      sector_t *index[16];
>      unsigned int num_targets;
>      unsigned int num_allocated;
>      sector_t *highs;
>      struct dm_target *targets;
>      struct target_type *immutable_target_type;
>      unsigned int integrity_supported : 1;
>      unsigned int singleton : 1;
>      fmode_t mode;
>      struct list_head devices;
>      void (*event_fn)(void *);
>      void *event_context;
>      struct dm_md_mempools *mempools;
>      struct list_head target_callbacks;
> }
> SIZE: 312
> crash-7.3.2> set scope 0
> scope: 0 (not set)
> crash-7.3.2> struct dm_table
> struct dm_table {
>      int undefined__;
> }
> SIZE: 4
>
>
> so I guess that "set scope" with gdb-10.2 has a problem in the
> first place.  The second issue above might become a clue.
>
Lianbo, is it possible to look into the issues more?  It might
> find a better implementation for "set scope".
>
>
Sure. Will try it. But it might be another issue. In my case, after
reverting the commit, it can not be reproduced, otherwise, it is always
reproduced.

Thanks.
Lianbo



> 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