On Wed, Nov 27, 2024 at 11:09 AM Guanyou Chen <chenguanyou9...@gmail.com>
wrote:

> Hi  lianbo
>
> > Thanks for pointing out this. Can you help to try this one?
>
> test pass.
>
>
Thank you for the confirmation, Guanyou.

Lets pick up this one. so: Ack(with this correction)

Thanks
Lianbo


> Thanks
> Guanyou
>
> lijiang <liji...@redhat.com> 于2024年11月27日周三 10:16写道:
>
>> On Tue, Nov 26, 2024 at 11:46 AM Guanyou Chen <chenguanyou9...@gmail.com>
>> wrote:
>>
>>> Hi  lianbo
>>>
>>> test case is non-elf-vmcore,  so all nt_prstatus_percpu invalid pointer.
>>>
>>>
>> Thanks for pointing out this. Can you help to try this one?
>>
>> diff --git a/netdump.c b/netdump.c
>> index b4e2a5cb2037..b67bdad3c511 100644
>> --- a/netdump.c
>> +++ b/netdump.c
>> @@ -2768,7 +2768,8 @@ display_regs_from_elf_notes(int cpu, FILE *ofp)
>>   }
>>   }
>>
>> - if ((cpu - skipped_count) >= nd->num_prstatus_notes &&
>> + if (((cpu < 0 ) || (!nd->nt_prstatus_percpu[cpu]) ||
>> + (cpu - skipped_count) >= nd->num_prstatus_notes) &&
>>       !machine_type("MIPS")) {
>>   error(INFO, "registers not collected for cpu %d\n", cpu);
>>   return;
>>
>> Lianbo
>>
>>
>>> Thanks
>>> Guanyou.
>>>
>>> lijiang <liji...@redhat.com> 于2024年11月26日周二 11:27写道:
>>>
>>>> Hi, Guanyou
>>>> Thank you for the fix.
>>>> On Mon, Nov 4, 2024 at 4:13 PM <
>>>> devel-requ...@lists.crash-utility.osci.io> wrote:
>>>>
>>>>> Date: Fri, 1 Nov 2024 18:01:27 +0800
>>>>> From: Guanyou Chen <chenguanyou9...@gmail.com>
>>>>> Subject: [Crash-utility] [PATCH] bugfix command "help -r" segv fault
>>>>> To: Lianbo <liji...@redhat.com>, Tao Liu <l...@redhat.com>,
>>>>>         devel@lists.crash-utility.osci.io
>>>>> Message-ID:
>>>>>         <CAHS3RMU3nuiqW4z=
>>>>> qo9roufadruxcalhyjnxwmcugodb_+3...@mail.gmail.com>
>>>>> Content-Type: multipart/mixed; boundary="00000000000065fc530625d705b8"
>>>>>
>>>>> --00000000000065fc530625d705b8
>>>>> Content-Type: multipart/alternative;
>>>>> boundary="00000000000065fc530625d705b6"
>>>>>
>>>>> --00000000000065fc530625d705b6
>>>>> Content-Type: text/plain; charset="UTF-8"
>>>>>
>>>>> Hi Lianbo, Tao
>>>>>
>>>>> When the ELF Note does not contain CPU registers,
>>>>> attempting to retrieve online CPU registers will cause a crash.
>>>>>
>>>>> After:
>>>>> CPU 6:
>>>>> help: registers not collected for cpu 6
>>>>> ...
>>>>>
>>>>> Signed-off-by: Guanyou.Chen <chenguan...@xiaomi.com>
>>>>> ---
>>>>>  netdump.c | 16 ++++++++++++++++
>>>>>  1 file changed, 16 insertions(+)
>>>>>
>>>>> diff --git a/netdump.c b/netdump.c
>>>>> index 8ea5159..435793b 100644
>>>>> --- a/netdump.c
>>>>> +++ b/netdump.c
>>>>> @@ -2780,6 +2780,10 @@ display_regs_from_elf_notes(int cpu, FILE *ofp)
>>>>>
>>>>
>>>> I copied the code block here:
>>>> display_regs_from_elf_notes(int cpu, FILE *ofp)
>>>> {
>>>>         Elf32_Nhdr *note32;
>>>>         Elf64_Nhdr *note64;
>>>>         size_t len;
>>>>         char *user_regs;
>>>>         int c, skipped_count;
>>>>
>>>>         /*
>>>>          * Kdump NT_PRSTATUS notes are only related to online cpus,
>>>>          * so offline cpus should be skipped.
>>>>          */
>>>>         if (pc->flags2 & QEMU_MEM_DUMP_ELF)
>>>>                 skipped_count = 0;
>>>>         else {
>>>>                 for (c = skipped_count = 0; c < cpu; c++) {
>>>>                         if (check_offline_cpu(c))
>>>>                                 skipped_count++;
>>>>                 }
>>>>         }
>>>>
>>>>         if ((cpu - skipped_count) >= nd->num_prstatus_notes &&
>>>>              !machine_type("MIPS")) {
>>>>                 error(INFO, "registers not collected for cpu %d\n",
>>>> cpu);
>>>>                 return;
>>>>         }
>>>> ...
>>>> Could you please point out why the above check does not work?
>>>>
>>>> BTW: I'm not sure if it can work for you, can you help to try this?
>>>> Just a guess.
>>>>
>>>>         if (((cpu < 0 ) || (!dd->nt_prstatus_percpu[cpu])
>>>>              || (cpu - skipped_count) >= nd->num_prstatus_notes) &&
>>>>              !machine_type("MIPS")) {
>>>>                 error(INFO, "registers not collected for cpu %d\n",
>>>> cpu);
>>>>                 return;
>>>>         }
>>>>
>>>> Thanks
>>>> Lianbo
>>>>
>>>>
>>>>                 nd->nt_prstatus_percpu[cpu];
>>>>>         else
>>>>>                     note64 = (Elf64_Nhdr *)nd->nt_prstatus;
>>>>> +       if (!note64) {
>>>>> +           error(INFO, "registers not collected for cpu %d\n", cpu);
>>>>> +           return;
>>>>> +       }
>>>>>         len = sizeof(Elf64_Nhdr);
>>>>>         len = roundup(len + note64->n_namesz, 4);
>>>>>         len = roundup(len + note64->n_descsz, 4);
>>>>> @@ -2820,6 +2824,10 @@ display_regs_from_elf_notes(int cpu, FILE *ofp)
>>>>>                 nd->nt_prstatus_percpu[cpu];
>>>>>         else
>>>>>                     note32 = (Elf32_Nhdr *)nd->nt_prstatus;
>>>>> +       if (!note32) {
>>>>> +           error(INFO, "registers not collected for cpu %d\n", cpu);
>>>>> +           return;
>>>>> +       }
>>>>>         len = sizeof(Elf32_Nhdr);
>>>>>         len = roundup(len + note32->n_namesz, 4);
>>>>>         len = roundup(len + note32->n_descsz, 4);
>>>>> @@ -2857,6 +2865,10 @@ display_regs_from_elf_notes(int cpu, FILE *ofp)
>>>>>         else
>>>>>             note64 = (Elf64_Nhdr *)nd->nt_prstatus;
>>>>>
>>>>> +       if (!note64) {
>>>>> +           error(INFO, "registers not collected for cpu %d\n", cpu);
>>>>> +           return;
>>>>> +       }
>>>>>         prs = (struct ppc64_elf_prstatus *)
>>>>>             ((char *)note64 + sizeof(Elf64_Nhdr) + note64->n_namesz);
>>>>>         prs = (struct ppc64_elf_prstatus *)roundup((ulong)prs, 4);
>>>>> @@ -2903,6 +2915,10 @@ display_regs_from_elf_notes(int cpu, FILE *ofp)
>>>>>                 nd->nt_prstatus_percpu[cpu];
>>>>>         else
>>>>>                     note64 = (Elf64_Nhdr *)nd->nt_prstatus;
>>>>> +       if (!note64) {
>>>>> +           error(INFO, "registers not collected for cpu %d\n", cpu);
>>>>> +           return;
>>>>> +       }
>>>>>         len = sizeof(Elf64_Nhdr);
>>>>>         len = roundup(len + note64->n_namesz, 4);
>>>>>         len = roundup(len + note64->n_descsz, 4);
>>>>> --
>>>>> 2.34.1
>>>>>
>>>>> Guanyou.
>>>>> Thanks
>>>>>
>>>>
--
Crash-utility mailing list -- devel@lists.crash-utility.osci.io
To unsubscribe send an email to devel-le...@lists.crash-utility.osci.io
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to