On Fri, Dec 20, 2024 at 12:50 AM Lucas Oakley <soak...@redhat.com> wrote:

> Hi Lianbo,
>
> Thank you for your input. It looks good to me, and it tests just fine.
> Sorry, not calling the routine twice should
>

Thanks for the confirmation, Lucas.


> have come to my mind before submitting. Would you like for me to resubmit
> a patch with the modifications,
> or would you like to take care of the next steps? This is the first patch
> I've submitted so I'm not totally sure.
>

No need to repost, I can help to modify it when merging this one(just make
slight changes).


> Hopefully more to come in the future!
>

Welcome, Lucas.

Thanks
Lianbo


>
> Best regards,
> Lucas
>
>
> On Wed, Dec 18, 2024 at 10:46 PM lijiang <liji...@redhat.com> wrote:
>
>> Hi, Lucas
>> Thank you for the fix.
>> On Tue, Dec 17, 2024 at 12:14 PM <
>> devel-requ...@lists.crash-utility.osci.io> wrote:
>>
>>> Date: Sat, 14 Dec 2024 18:01:14 -0500
>>> From: Lucas Oakley <soak...@redhat.com>
>>> Subject: [Crash-utility] [PATCH] Fix incorrect 'bt -v' output
>>>         suggesting overflow
>>> To: devel@lists.crash-utility.osci.io
>>> Message-ID: <20241214230114.2854910-1-soak...@redhat.com>
>>> Content-Type: text/plain; charset="US-ASCII"; x-default=true
>>>
>>> Change check_stack_overflow() to check if the thread_info's cpu
>>> member is smaller than possible existing CPUs, rather than the
>>> kernel table's cpu number (kt->cpus). The kernel table's cpu number
>>> is changed on some architectures to reflect the highest numbered
>>> online cpu + 1. This can cause a false positive in
>>> check_stack_overflow() if the cpu member of a parked task's
>>> thread_info structure, assigned to an offlined cpu, is larger than
>>> the kt->cpus but lower than the number of existing logical cpus.
>>> An example of this is RHEL 7 on s390x or RHEL 8 on ppc64le when
>>> the highest numbered CPU is offlined.
>>>
>>> Signed-off-by: Lucas Oakley <soak...@redhat.com>
>>> ---
>>>  task.c | 4 ++--
>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/task.c b/task.c
>>> index 33de7da..93dab0e 100644
>>> --- a/task.c
>>> +++ b/task.c
>>> @@ -11253,12 +11253,12 @@ check_stack_overflow(void)
>>>                                 cpu = 0;
>>>                                 break;
>>>                         }
>>> -                       if (cpu >= kt->cpus) {
>>> +                       if (cpu >= get_cpus_present()) {
>>>                                 if (!overflow)
>>>                                         print_task_header(fp, tc, 0);
>>>                                 fprintf(fp,
>>>                                     "  possible stack overflow:
>>> thread_info.cpu: %d >= %d\n",
>>> -                                       cpu, kt->cpus);
>>> +                                       cpu, get_cpus_present());
>>>                                 overflow++; total++;
>>>                         }
>>>                 }
>>>
>>
>> To avoid calling get_cpus_present() twice, I would tend to modify it as
>> below:
>>
>> diff --git a/task.c b/task.c
>> index 33de7da2a692..49f771e275c1 100644
>> --- a/task.c
>> +++ b/task.c
>> @@ -11238,6 +11238,8 @@ check_stack_overflow(void)
>>                 }
>>
>>                 if (VALID_MEMBER(thread_info_cpu)) {
>> +                       int cpus = get_cpus_present();
>> +
>>                         switch (cpu_size)
>>                         {
>>                         case 1:
>> @@ -11253,12 +11255,12 @@ check_stack_overflow(void)
>>                                 cpu = 0;
>>                                 break;
>>                         }
>> -                       if (cpu >= kt->cpus) {
>> +                       if (cpu >= cpus) {
>>                                 if (!overflow)
>>                                         print_task_header(fp, tc, 0);
>>                                 fprintf(fp,
>>                                     "  possible stack overflow:
>> thread_info.cpu: %d >= %d\n",
>> -                                       cpu, kt->cpus);
>> +                                       cpu, cpus);
>>                                 overflow++; total++;
>>                         }
>>                 }
>>
>> What do you think?
>>
>>
>>  Lianbo
>>
>> --
>>> 2.47.1
>>>
>>
--
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