#1116453 mpi4py: FTBFS on sh4: too large for field of 2 bytes

#1116453#5
Date:
2025-09-27 13:23:19 UTC
From:
To:
mpi4py has started failing to build on sh4:

building 'mpi4py.MPI' extension
creating build/temp.linux-sh4-cpython-313/src/mpi4py
/usr/bin/mpicc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPYMPIABI=1 -DHAVE_DLFCN_H=1 -DHAVE_DLOPEN=1 -Isrc -I/usr/include/python3.13 -c src/mpi4py/MPI.c -o build/temp.linux-sh4-cpython-313/src/mpi4py/MPI.o
src/mpi4py/MPI.c: In function ‘__pyx_pymod_exec_MPI’:
src/mpi4py/MPI.c:289780:30: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
289780 | static CYTHON_SMALL_CODE int __pyx_pymod_exec_MPI(PyObject *__pyx_pyinit_module)
       |                              ^~~~~~~~~~~~~~~~~~~~
/tmp/cczUpbyN.s: Assembler messages:
/tmp/cczUpbyN.s:8852502: Error: value of 0001528e too large for field of 2 bytes at 0003995f
error: command '/usr/bin/mpicc' failed with exit code 1


Likely due to changes in gcc-15, aided and abetted by cython 3.0.
Upstream suggests building with -DCYTHON_LIMITED_API=1
see https://github.com/mpi4py/mpi4py/pull/690#issuecomment-3337456651

#1116453#10
Date:
2025-09-27 13:30:35 UTC
From:
To:
Hi Drew,

Thanks a lot for investigating this issue and reporting it, I will have a look.

However, since sh4 is not a release architecture, the severity should be lowered.

Adrian

#1116453#17
Date:
2025-09-27 13:34:16 UTC
From:
To:
Addendum:

Since we switched GCC to the LRA backend for version 15 on sh4, this particular
bug could actually be a regression due to the switch and we should report this
upstream.

A test case will be to verify whether this issue still shows with "-mno-lra".

Adrian

#1116453#22
Date:
2025-09-27 22:21:49 UTC
From:
To:
Alas, sh4 still gives the same mpi4py build error with -mno-lra
in 4.1.0-9:

building 'mpi4py.MPI' extension
creating build/temp.linux-sh4-cpython-313/src/mpi4py
/usr/bin/mpicc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -mno-lra -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPYMPIABI=1 -DHAVE_DLFCN_H=1 -DHAVE_DLOPEN=1 -Isrc -I/usr/include/python3.13 -c src/mpi4py/MPI.c -o build/temp.linux-sh4-cpython-313/src/mpi4py/MPI.o
src/mpi4py/MPI.c: In function ‘__pyx_pymod_exec_MPI’:
src/mpi4py/MPI.c:289780:30: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
289780 | static CYTHON_SMALL_CODE int __pyx_pymod_exec_MPI(PyObject *__pyx_pyinit_module)
       |                              ^~~~~~~~~~~~~~~~~~~~
/tmp/cc53m0oU.s: Assembler messages:
/tmp/cc53m0oU.s:8580427: Error: value of 00015692 too large for field of 2 bytes at 0003a273
error: command '/usr/bin/mpicc' failed with exit code 1

#1116453#27
Date:
2025-09-28 06:22:18 UTC
From:
To:
Hi Drew,

Thanks for testing. Can you retest with gcc-14 instead?

Adrian

#1116453#32
Date:
2025-09-28 07:37:26 UTC
From:
To:
John Paul Adrian Glaubitz wrote:

Not really, no.

There's no sh4 porterbox, only the buildd.
It's already configured to gcc-15.

#1116453#37
Date:
2025-09-28 08:12:28 UTC
From:
To:
Please don't use buildds as CI, as this can clog the build queue.

As for testing with sh4, you can do that with qemu-user, see:

https://wiki.debian.org/SH4/sbuildQEMU

But anyway, I will look into it. Thanks for reporting it!

Adrian