From 5208b7a1bde348c60a40ca6a62526d95a9ce93f6 Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Sat, 20 Sep 2025 17:58:03 +0200 Subject: [PATCH] support/testing: TestZfsUclibc: use internal backend for uClibc-ng toolchain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As reported on the mailing list [1] while investigating the TestZfsUclibc Gitlab-CI failure, the python 3.13 interpreter itsef segfault at runtime: Fatal Python error: _PyThreadState_Attach: non-NULL old thread state Python runtime state: preinitialized Thread 0xSegmentation fault This issue is related to the python 3.13 version bump [2] were several internal changes were added [3] to support PEP 703 [4]. PEP 793 is about CPython’s global interpreter lock (“GIL”) removal for multi-threads support that requires a working C11 "thread_local" for thread-local storage [5]. The new uclibc-ng 1.0.55 release contains a fix for this issue [6]. This version is included in Buildroot commit [7]. Since the prebuilt Bootling aarch64 uclibc stable 2025.08-1 is based on previous uClibc-ng release (1.0.54) we have to use the internal toolchain backend to build a new uClibc-ng toolchain using uclibc-ng 1.0.55. Note: the toolchain config defined in this commit reflects the options enabled in the Bootling aarch64 uclibc external toolchains. Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/11271124859 (TestZfsUclibc) [1] https://lore.kernel.org/buildroot/7a4d245d-1556-43c9-8997-6b1f791afbfe@gmail.com/ (TestZfsUclibc) [2] https://gitlab.com/buildroot.org/buildroot/-/commit/d63e207eb869063f82c867658676c2903beb08cb [3] https://github.com/python/cpython/commit/6e97a9647ae028facb392d12fc24973503693bd6 [4] https://peps.python.org/pep-0703/ [5] https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Thread-Local.html [6] https://github.com/wbx-github/uclibc-ng/commit/94c1297d52263e20cd9715601afa37f49d008d93 [7] https://gitlab.com/buildroot.org/buildroot/-/commit/5250bba8e5b1aaeb58977baf1d91e2be66656476 Cc: José Luis Salvador Rufo Tested-by: José Luis Salvador Rufo Cc: Waldemar Brodkorb Signed-off-by: Romain Naour [Julien: - add link to buildroot commit updating uclibc-ng to 1.0.55 - add a note in the commit log about the toolchain config ] Signed-off-by: Julien Olivain --- support/testing/tests/package/test_zfs.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/support/testing/tests/package/test_zfs.py b/support/testing/tests/package/test_zfs.py index 1b907ac4de..c218cc36a8 100644 --- a/support/testing/tests/package/test_zfs.py +++ b/support/testing/tests/package/test_zfs.py @@ -74,9 +74,18 @@ class TestZfsGlibc(TestZfsBase): class TestZfsUclibc(TestZfsBase): - config = TestZfsBase.config + \ + # The Bootling aarch64 uclibc stable 2025.08-1 needs to be + # rebuild with uClibc-ng 1.0.55. + # See: https://github.com/wbx-github/uclibc-ng/commit/94c1297d52263e20cd9715601afa37f49d008d93 + config = TestZfsBase.config.replace('BR2_TOOLCHAIN_EXTERNAL=y\n', '') + config = config.replace('BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n', '') + \ """ - BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_STABLE=y + BR2_TOOLCHAIN_BUILDROOT_UCLIBC=y + BR2_KERNEL_HEADERS_5_4=y + BR2_TOOLCHAIN_BUILDROOT_LOCALE=y + BR2_PTHREAD_DEBUG=y + BR2_TOOLCHAIN_BUILDROOT_CXX=y + BR2_GCC_ENABLE_OPENMP=y """ def test_run(self):