[Crash-utility] [PATCH 2/2] Revert "crash_taget: fetch_registers support"
HAGIO KAZUHITO(萩尾 一仁)
k-hagio-ab at nec.com
Thu Sep 29 01:10:13 UTC 2022
On 2022/09/27 17:56, lijiang wrote:
> On Tue, Sep 27, 2022 at 4:27 PM HAGIO KAZUHITO(萩尾 一仁) <k-hagio-ab at 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?
> 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.
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.
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".
Thanks,
Kazu
More information about the Crash-utility
mailing list