[Crash-utility] [PATCH] crash-extension/gcore: fix the failure of invalid structure member offset

lijiang lijiang at redhat.com
Mon Aug 31 02:18:13 UTC 2020


在 2020年08月28日 19:01, d.hatayama at fujitsu.com 写道:
> Lianbo, Hagio,
> 
> Yes. I'll review this patch. Wait for a while.
> 
Thank you, Hatayama.

Recently, I'm trying to add the crash extensions to Fedora, and the gcore reports
an error, which blocks my progress. So, this issue needs to be fixed in upstream
firstly.

BTW: I'm not sure if the maintainer of crash-trace-command and crash-ptdump-command
     could help to check accordingly on the latest kernel.

Thanks.
Lianb.


> Thanks.
> HATAYAMA, Daisuke
> 
> 
> ________________________________________
> From: crash-utility-bounces at redhat.com <crash-utility-bounces at redhat.com> on behalf of HAGIO KAZUHITO(萩尾 一仁) <k-hagio-ab at nec.com>
> Sent: Friday, August 28, 2020 17:36
> To: Bhupesh Sharma; Lianbo Jiang
> Cc: Discussion list for crash utility usage,    maintenance and development
> Subject: Re: [Crash-utility] [PATCH] crash-extension/gcore: fix the failure of invalid structure member offset
> 
> -----Original Message-----
>> Hi Lianbo,
>>
>> Please note that we still need to formulate a way to maintain
>> crash-extension outside a tarball.
>> I am preparing a RFC proposal and will share it shortly.
> 
> FYI, the maintainer of gcore is Daisuke (Hatayama-san), so I think he
> will review the patch and release a new version of gcore someday, and
> then we put it to the crash-extension repository.  As for gcore, this
> is the way Dave and Hatayama-san have done so far, IIRC.
> 
>>
>> On Fri, Aug 28, 2020 at 9:34 AM Lianbo Jiang <lijiang at redhat.com> wrote:
>>>
>>> With kernel commit: <577d5cd7e585> ("x86/ioperm: Move iobitmap data into
>>> a struct"), the io_bitmap_max and io_bitmap_ptr have been changed. And
>>> move the iobitmap data into a struct io_bitmap.
>>>
>>> So, the crash-gcore-command needs to be updated accordingly, otherwise,
>>> the gcore will fail as below:
>>>
>>> crash> bt -t|grep -i task
>>> PID: 3968   TASK: ffff9e512e97af80  CPU: 86  COMMAND: "bash"
>>> crash> gcore 3968
>>>
>>> gcore: invalid structure member offset: thread_struct_io_bitmap_max
>>>        FILE: libgcore/gcore_x86.c  LINE: 846  FUNCTION: ioperm_active()
>>>
>>> [./crash] error trace: 7f31fca56108 => 7f31fca593b7 => 53a4e1 => 53a463
>>>
>>>   53a463: OFFSET_verify.part.27+51
>>>   53a4e1: OFFSET_verify+49
>>>
>>> gcore: invalid structure member offset: thread_struct_io_bitmap_max
>>>        FILE: libgcore/gcore_x86.c  LINE: 846  FUNCTION: ioperm_active()
>>>
>>> Failed.
>>>
>>> Signed-off-by: Lianbo Jiang <lijiang at redhat.com>
>>> ---
>>>  gcore.c | 4 ++++
>>>  1 file changed, 4 insertions(+)
>>>
>>> diff --git a/gcore.c b/gcore.c
>>> index 27a11938026a..e3e41ecb435b 100644
>>> --- a/gcore.c
>>> +++ b/gcore.c
>>> @@ -487,6 +487,10 @@ static void gcore_offset_table_init(void)
>>>                 GCORE_MEMBER_OFFSET_INIT(thread_struct_xstate, "thread_struct", "i387");
>>>         GCORE_MEMBER_OFFSET_INIT(thread_struct_io_bitmap_max, "thread_struct", "io_bitmap_max");
>>>         GCORE_MEMBER_OFFSET_INIT(thread_struct_io_bitmap_ptr, "thread_struct", "io_bitmap_ptr");
>>> +       if (GCORE_INVALID_MEMBER(thread_struct_io_bitmap_max)) {
>>> +               GCORE_MEMBER_OFFSET_INIT(thread_struct_io_bitmap_max, "io_bitmap", "max");
>>> +               GCORE_MEMBER_OFFSET_INIT(thread_struct_io_bitmap_ptr, "io_bitmap", "bitmap");
>>> +       }
>>
>> Maybe its better to protect this with a kernel version check to
>> maintain backward compatibility. Something like:
>>
>> (THIS_KERNEL_VERSION < LINUX(4,2,0))
> 
> I've not looked at this yet, but generally we have to try to avoid
> using kernel version check as far as possible, because kernel version
> is fragile in distribution kernels, e.g. RHEL8 kernels are 4.18.0 but
> have many 5.x patches.
> 
> Thanks,
> Kazu
> 
>>
>> Thanks,
>> Bhupesh
>>
>>>         GCORE_MEMBER_OFFSET_INIT(user_regset_n, "user_regset", "n");
>>>         GCORE_MEMBER_OFFSET_INIT(vm_area_struct_anon_vma, "vm_area_struct", "anon_vma");
>>>         GCORE_MEMBER_OFFSET_INIT(vm_area_struct_vm_ops, "vm_area_struct", "vm_ops");
>>> --
>>> 2.17.1
>>>
> 
> 
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility
> 




More information about the Crash-utility mailing list