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 <soakley@xxxxxxxxxx> --- 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++; } } -- 2.47.1 -- Crash-utility mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxxxxxx https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/ Contribution Guidelines: https://github.com/crash-utility/crash/wiki