#1131773 setuptools: object file collisions in parallel extension builds

Package:
setuptools
Source:
setuptools
Submitter:
Hector Cao
Date:
2026-08-17 18:49:01 UTC
Severity:
normal
Tags:
#1131773#5
Date:
2026-03-24 11:21:43 UTC
From:
To:
Dear Maintainer,

With the transition to python 3.14, builds of python extensions might fail
on multi-core system because of a race condition in distutils (used by setuptools).

This issue has been reported upstream and a fix is being proposed:
https://github.com/pypa/distutils/pull/393

On affected python extension is libvirt-python package with following build error:
---
aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,--package-metadata={%22type%22:%22deb%22%2C%22os%22:%22ubuntu%22%2C%22name%22:%22python3.13%22%2C%22version%22:%223.13.11-1%22%2C%22architecture%22:%22arm64%22} -Wl,-z,relro -g -fwrapv -O2 -Wl,-Bsymbolic-functions -Wl,--package-metadata=%7B%22type%22:%22deb%22%2C%22os%22:%22ubuntu%22%2C%22name%22:%22libvirt-python%22%2C%22version%22:%2212.0.0-1%22%2C%22architecture%22:%22arm64%22%7D -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,-z,now -g -O2 -Werror=implicit-function-declaration -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/<<PKGBUILDDIR>>=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fdebug-prefix-map=/<<PKGBUILDDIR>>=/usr/src/libvirt-python-12.0.0-1 -Wdate-time -D_FORTIFY_SOURCE=3 build/temp.linux-aarch64-cpython-313/build/libvirt-qemu.o build/temp.linux-aarch64-cpython-313/libvirt-qemu-override.o build/temp.linux-aarch64-cpython-313/libvirt-utils.o build/temp.linux-aarch64-cpython-313/typewrappers.o -L/usr/lib/aarch64-linux-gnu -lvirt-qemu -lvirt -o build/lib.linux-aarch64-cpython-313/libvirtmod_qemu.cpython-313-aarch64-linux-gnu.so
aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,--package-metadata={%22type%22:%22deb%22%2C%22os%22:%22ubuntu%22%2C%22name%22:%22python3.13%22%2C%22version%22:%223.13.11-1%22%2C%22architecture%22:%22arm64%22} -Wl,-z,relro -g -fwrapv -O2 -Wl,-Bsymbolic-functions -Wl,--package-metadata=%7B%22type%22:%22deb%22%2C%22os%22:%22ubuntu%22%2C%22name%22:%22libvirt-python%22%2C%22version%22:%2212.0.0-1%22%2C%22architecture%22:%22arm64%22%7D -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,-z,now -g -O2 -Werror=implicit-function-declaration -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/<<PKGBUILDDIR>>=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fdebug-prefix-map=/<<PKGBUILDDIR>>=/usr/src/libvirt-python-12.0.0-1 -Wdate-time -D_FORTIFY_SOURCE=3 build/temp.linux-aarch64-cpython-313/build/libvirt-lxc.o build/temp.linux-aarch64-cpython-313/libvirt-lxc-override.o build/temp.linux-aarch64-cpython-313/libvirt-utils.o build/temp.linux-aarch64-cpython-313/typewrappers.o -L/usr/lib/aarch64-linux-gnu -lvirt-lxc -lvirt -o build/lib.linux-aarch64-cpython-313/libvirtmod_lxc.cpython-313-aarch64-linux-gnu.so
lto1: internal compiler error: in read_cgraph_and_symbols, at lto/lto-common.cc:2855
0xf068af diagnostic_context::diagnostic_impl(rich_location*, diagnostic_metadata const*, diagnostic_option_id, char const*, std::__va_list*, diagnostic_t)
 ???:0
0xed7857 internal_error(char const*, ...)
 ???:0
0xed793b fancy_abort(char const*, int, char const*)
 ???:0
0xf762cb read_cgraph_and_symbols(unsigned int, char const**)
 ???:0
0x17ee567 lto_main()
 ???:0
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-15/README.Bugs> for instructions.
lto-wrapper: fatal error: /usr/bin/aarch64-linux-gnu-gcc returned 1 exit status
compilation terminated.
/usr/bin/aarch64-linux-gnu-ld.bfd: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
---

*** /tmp/tmprofof8dv/bug_body

In Ubuntu, the attached patch was applied to achieve the following:

  * fix race condition for parallel extensions builds (LP: #2139083)


Thanks for considering the patch.

#1131773#10
Date:
2026-03-24 12:17:17 UTC
From:
To:
how does this relate to an internal compiler error?
#1131773#17
Date:
2026-03-26 08:05:56 UTC
From:
To:
Hello Matthias,

Thanks for your feedback

libvirt-python contains several extensions: libvirtmod, libvirtmod_qemu,
libvirtmod_lxc
those extensions use common source files (typewrappers.c, libvirt-utils.c)

The fact that we enable parallel build and the build of all extensions are
done in the same folder might lead to
race condition that can lead to undeterministic output of the build

Right now, enabling -lto seems to increase the occurrence of this race
condition but I am not surprised if that happens
in other conditions.

#1131773#22
Date:
2026-03-26 10:25:17 UTC
From:
To:
For debian

Even if it hard to make the failure happen

I manage to make it happen by adding a expensive compilation snippet to
libvirt-utils.c and loop on the package building
after some timen it fails with this log:

creating build/temp.linux-x86_64-cpython-314/build
building 'libvirtmod_qemu' extension
creating build/temp.linux-x86_64-cpython-314/build
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
build/libvirt.c -o build/temp.linux-x86_64-cpython-314/build/libvirt.o
-Ibuild -Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
build/libvirt-qemu.c -o
build/temp.linux-x86_64-cpython-314/build/libvirt-qemu.o -Ibuild
-Wp,-DPy_LIMITED_API=0x03060000
building 'libvirtmod_lxc' extension
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
build/libvirt-lxc.c -o
build/temp.linux-x86_64-cpython-314/build/libvirt-lxc.o -Ibuild
-Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
libvirt-qemu-override.c -o
build/temp.linux-x86_64-cpython-314/libvirt-qemu-override.o -Ibuild
-Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
libvirt-lxc-override.c -o
build/temp.linux-x86_64-cpython-314/libvirt-lxc-override.o -Ibuild
-Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
libvirt-utils.c -o build/temp.linux-x86_64-cpython-314/libvirt-utils.o
-Ibuild -Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
libvirt-utils.c -o build/temp.linux-x86_64-cpython-314/libvirt-utils.o
-Ibuild -Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
typewrappers.c -o build/temp.linux-x86_64-cpython-314/typewrappers.o
-Ibuild -Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
typewrappers.c -o build/temp.linux-x86_64-cpython-314/typewrappers.o
-Ibuild -Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro
-g -fwrapv -O2 -Wl,-z,relro -Wl,-z,now -g -O2
-Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2
build/temp.linux-x86_64-cpython-314/build/libvirt-lxc.o
build/temp.linux-x86_64-cpython-314/libvirt-lxc-override.o
build/temp.linux-x86_64-cpython-314/libvirt-utils.o
build/temp.linux-x86_64-cpython-314/typewrappers.o
-L/usr/lib/x86_64-linux-gnu -lvirt-lxc -lvirt -o
build/lib.linux-x86_64-cpython-314/
libvirtmod_lxc.cpython-314-x86_64-linux-gnu.so
/usr/bin/x86_64-linux-gnu-ld.bfd: cannot find
build/temp.linux-x86_64-cpython-314/typewrappers.o: No such file or
directory
x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro
-g -fwrapv -O2 -Wl,-z,relro -Wl,-z,now -g -O2
-Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2
build/temp.linux-x86_64-cpython-314/build/libvirt-qemu.o
build/temp.linux-x86_64-cpython-314/libvirt-qemu-override.o
build/temp.linux-x86_64-cpython-314/libvirt-utils.o
build/temp.linux-x86_64-cpython-314/typewrappers.o
-L/usr/lib/x86_64-linux-gnu -lvirt-qemu -lvirt -o
build/lib.linux-x86_64-cpython-314/
libvirtmod_qemu.cpython-314-x86_64-linux-gnu.so
collect2: error: ld returned 1 exit status
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
libvirt-override.c -o
build/temp.linux-x86_64-cpython-314/libvirt-override.o -Ibuild
-Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
libvirt-utils.c -o build/temp.linux-x86_64-cpython-314/libvirt-utils.o
-Ibuild -Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. -I/usr/include/python3.14 -c
typewrappers.c -o build/temp.linux-x86_64-cpython-314/typewrappers.o
-Ibuild -Wp,-DPy_LIMITED_API=0x03060000
x86_64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro
-g -fwrapv -O2 -Wl,-z,relro -Wl,-z,now -g -O2
-Werror=implicit-function-declaration
-ffile-prefix-map=/src/libvirt-python-12.0.0=. -fstack-protector-strong
-fstack-clash-protection -Wformat -Werror=format-security -fcf-protection
-Wdate-time -D_FORTIFY_SOURCE=2
build/temp.linux-x86_64-cpython-314/build/libvirt.o
build/temp.linux-x86_64-cpython-314/libvirt-override.o
build/temp.linux-x86_64-cpython-314/libvirt-utils.o
build/temp.linux-x86_64-cpython-314/typewrappers.o
-L/usr/lib/x86_64-linux-gnu -lvirt -o build/lib.linux-x86_64-cpython-314/
libvirtmod.cpython-314-x86_64-linux-gnu.so
error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1

ERROR Backend subprocess exited when trying to invoke build_wheel
E: pybuild pybuild:485: build: plugin pyproject failed with: exit code=1:
python3.14 -m build --skip-dependency-check --no-isolation --wheel --outdir
/src/libvirt-python-12.0.0/.pybuild/cpython3_3.14
dh_auto_build: error: pybuild --build -i python{version} -p 3.14
--parallel=16 returned exit code 13
make: *** [debian/rules:14: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit
status 2
debuild: fatal error at line 1185:
dpkg-buildpackage -us -uc -ui -b failed

#1131773#27
Date:
2026-08-17 18:46:48 UTC
From:
To:
The bug seems to happen again for libvirt-python in Stonking

FTBFS for amd64v3:
https://launchpadlibrarian.net/872450542/buildlog_ubuntu-stonking-amd64v3.libvirt-python_12.6.0-1_BUILDING.txt.gz

On Thu, Mar 26, 2026 at 11:25 AM Hector Cao <hector.cao@canonical.com> wrote: