[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1763151587.3581913.1727224126288@privateemail.com>
Date: Wed, 25 Sep 2024 02:28:46 +0200 (CEST)
From: Marco Bonelli <marco@...eim.net>
To: "masahiroy@...nel.org" <masahiroy@...nel.org>
Cc: "linux-kbuild@...r.kernel.org" <linux-kbuild@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Broken Kconfig scripts in v6.11: conf/mconf stuck in endless loop
at 100% CPU
I was building v6.11 for PowerPC when I noticed that `make olddefconfig` hangs
indefinitely when running `scripts/kconfig/conf` and gets stuck in what seems
an infinite loop at 100% CPU while evaluating an expression.
The issue is still present on master of linux-next. I did a bisect run and
narrowed it down to this commit:
f79dc03fe68c79d388908182e68d702f7f1786bc kconfig: refactor choice value calculation
Steps to reproduce:
git checkout v6.11
export ARCH=powerpc CROSS_COMPILE=powerpc-linux-
make distclean
make ppc64_defconfig
./scripts/config --file .config -d PPC64
make olddefconfig
# Hangs indefinitely running scripts/kconfig/conf
The same outcome can be achieved with:
git checkout v6.11
export ARCH=powerpc CROSS_COMPILE=powerpc-linux-
make distclean
make ppc64_defconfig
make menuconfig
# Manually disable PPC64 by unchecking "64-bit kernel", save and exit
# Hangs indefinitely running scripts/kconfig/mconf
Not sure what exactly is causing the issue as I am not familiar with these
tools, but it seems to me that conf/mconf get stuck endlessly evaluating an
expression.
Here is a stack trace after re-compiling with HOSTCFLAGS="-O0 -g" and attaching
to the `conf` process with GDB. It looks like the last sym_calc_choice() at
frame #4 never returns.
#0 0x0000557bc97287cd in expr_calc_value (e=0x557bcb812800) at scripts/kconfig/expr.c:1012
#1 0x0000557bc972880e in expr_calc_value (e=0x557bcb8127e0) at scripts/kconfig/expr.c:1017
#2 0x0000557bc9728823 in expr_calc_value (e=0x557bcb8127a0) at scripts/kconfig/expr.c:1018
#3 0x0000557bc9732a67 in sym_calc_visibility (sym=0x557bca6692e0) at scripts/kconfig/symbol.c:211
#4 0x0000557bc9732db3 in sym_calc_choice (choice=0x557bca669040) at scripts/kconfig/symbol.c:299
#5 0x0000557bc9733384 in sym_calc_value (sym=0x557bca66bb10) at scripts/kconfig/symbol.c:457
#6 0x0000557bc97287ec in expr_calc_value (e=0x557bcb80e710) at scripts/kconfig/expr.c:1014
#7 0x0000557bc9728886 in expr_calc_value (e=0x557bcb80e6f0) at scripts/kconfig/expr.c:1025
#8 0x0000557bc9728823 in expr_calc_value (e=0x557bcb80e670) at scripts/kconfig/expr.c:1018
#9 0x0000557bc972885f in expr_calc_value (e=0x557bcb80e630) at scripts/kconfig/expr.c:1022
#10 0x0000557bc9732a67 in sym_calc_visibility (sym=0x557bca66d970) at scripts/kconfig/symbol.c:211
#11 0x0000557bc97332f3 in sym_calc_value (sym=0x557bca66d970) at scripts/kconfig/symbol.c:443
#12 0x0000557bc97287ec in expr_calc_value (e=0x557bcc6a6cf0) at scripts/kconfig/expr.c:1014
#13 0x0000557bc9728823 in expr_calc_value (e=0x557bcc6a6cb0) at scripts/kconfig/expr.c:1018
#14 0x0000557bc9728823 in expr_calc_value (e=0x557bcc6a6bd0) at scripts/kconfig/expr.c:1018
#15 0x0000557bc9732a67 in sym_calc_visibility (sym=0x557bcb6cf0e0) at scripts/kconfig/symbol.c:211
#16 0x0000557bc97332f3 in sym_calc_value (sym=0x557bcb6cf0e0) at scripts/kconfig/symbol.c:443
#17 0x0000557bc97287ec in expr_calc_value (e=0x557bcc6a7270) at scripts/kconfig/expr.c:1014
#18 0x0000557bc972880e in expr_calc_value (e=0x557bcc6a7290) at scripts/kconfig/expr.c:1017
#19 0x0000557bc972885f in expr_calc_value (e=0x557bcc6a72b0) at scripts/kconfig/expr.c:1022
#20 0x0000557bc972884a in expr_calc_value (e=0x557bcc6b1bf0) at scripts/kconfig/expr.c:1021
#21 0x0000557bc972884a in expr_calc_value (e=0x557bcc6b5c70) at scripts/kconfig/expr.c:1021
#22 0x0000557bc972884a in expr_calc_value (e=0x557bcc6cf2d0) at scripts/kconfig/expr.c:1021
#23 0x0000557bc972884a in expr_calc_value (e=0x557bcc6fc0f0) at scripts/kconfig/expr.c:1021
#24 0x0000557bc972884a in expr_calc_value (e=0x557bcc726130) at scripts/kconfig/expr.c:1021
#25 0x0000557bc972884a in expr_calc_value (e=0x557bcc726170) at scripts/kconfig/expr.c:1021
#26 0x0000557bc972884a in expr_calc_value (e=0x557bcc7262f0) at scripts/kconfig/expr.c:1021
#27 0x0000557bc972884a in expr_calc_value (e=0x557bcc73bb30) at scripts/kconfig/expr.c:1021
#28 0x0000557bc9732ba7 in sym_calc_visibility (sym=0x557bca718350) at scripts/kconfig/symbol.c:234
#29 0x0000557bc97332f3 in sym_calc_value (sym=0x557bca718350) at scripts/kconfig/symbol.c:443
#30 0x0000557bc97287ec in expr_calc_value (e=0x557bcc725e10) at scripts/kconfig/expr.c:1014
#31 0x0000557bc9732a67 in sym_calc_visibility (sym=0x557bcb737420) at scripts/kconfig/symbol.c:211
#32 0x0000557bc97332f3 in sym_calc_value (sym=0x557bcb737420) at scripts/kconfig/symbol.c:443
#33 0x0000557bc9724718 in conf_read (name=0x0) at scripts/kconfig/confdata.c:492
#34 0x0000557bc9722f6e in main (ac=3, av=0x7ffe09eadc08) at scripts/kconfig/conf.c:733
Additional details:
Host: Linux 6.1.0-25-amd64 Debian Bookworm
HOSTCC: gcc --version: gcc (Debian 12.2.0-14) 12.2.0
CC: powerpc-linux-gcc --version: powerpc-linux-gcc (GCC) 12.2.0
(from https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/12.2.0/)
Full bisect run log:
# bad: [8400291e289ee6b2bf9779ff1c83a291501f017b] Linux 6.11-rc1
# good: [0c3836482481200ead7b416ca80c68a29cfdaabd] Linux 6.10
git bisect start 'v6.11-rc1' 'v6.10'
# good: [280e36f0d5b997173d014c07484c03a7f7750668] nsfs: use cleanup guard
git bisect good 280e36f0d5b997173d014c07484c03a7f7750668
# good: [a4f9285520584977127946a22eab2adfbc87d1bf] Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
git bisect good a4f9285520584977127946a22eab2adfbc87d1bf
# good: [2c9b3512402ed192d1f43f4531fb5da947e72bd0] Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
git bisect good 2c9b3512402ed192d1f43f4531fb5da947e72bd0
# good: [6dc2e98d5f1de162d1777aee97e59d75d70d07c5] s390: Remove protvirt and kvm config guards for uv code
git bisect good 6dc2e98d5f1de162d1777aee97e59d75d70d07c5
# bad: [c2a96b7f187fb6a455836d4a6e113947ff11de97] Merge tag 'driver-core-6.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
git bisect bad c2a96b7f187fb6a455836d4a6e113947ff11de97
# bad: [786c8248dbd33a5a7a07f7c6e55a7bfc68d2ca48] Merge tag 'perf-tools-fixes-for-v6.11-2024-07-23' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools
git bisect bad 786c8248dbd33a5a7a07f7c6e55a7bfc68d2ca48
# good: [643af93f15be901982b2b08f241263934201c99f] Merge tag 'rpmsg-v6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux
git bisect good 643af93f15be901982b2b08f241263934201c99f
# bad: [bde6fb37bbc3a41eb63b1e4d06e2ff217d4a2f18] kallsyms: avoid repeated calculation of array size for markers
git bisect bad bde6fb37bbc3a41eb63b1e4d06e2ff217d4a2f18
# bad: [b139b43e9d47552b3f998fade184ed19e45d0c32] kconfig: use sym_get_choice_menu() in sym_check_deps()
git bisect bad b139b43e9d47552b3f998fade184ed19e45d0c32
# good: [bd988e7cb84a7f27e8ec100c5f68498b7d4fa69c] kconfig: introduce choice_set_value() helper
git bisect good bd988e7cb84a7f27e8ec100c5f68498b7d4fa69c
# bad: [f79dc03fe68c79d388908182e68d702f7f1786bc] kconfig: refactor choice value calculation
git bisect bad f79dc03fe68c79d388908182e68d702f7f1786bc
# good: [7308bf8a2c3d008f3662eaa3b4c3bbe55852d6c6] modpost: Enable section warning from *driver to .exit.text
git bisect good 7308bf8a2c3d008f3662eaa3b4c3bbe55852d6c6
# good: [17c31aded9a1ee87e37f0ea0e3737797ef3f8c97] scripts/make_fit: Support decomposing DTBs
git bisect good 17c31aded9a1ee87e37f0ea0e3737797ef3f8c97
# good: [ee29e6204c32dce013ac6d1078d98dce5607ce86] kconfig: import list_move(_tail) and list_for_each_entry_reverse macros
git bisect good ee29e6204c32dce013ac6d1078d98dce5607ce86
# first bad commit: [f79dc03fe68c79d388908182e68d702f7f1786bc] kconfig: refactor choice value calculation
Let me know if any additional information is needed. Happy to help.
--
Marco Bonelli
Powered by blists - more mailing lists