Closed blochl closed 1 month ago
Can you try with the main branch ? I suspect the version of gcc, because I tested everything else like python 3.12, numpy 2, ...
There are some bugs looks similar like:
https://github.com/scikit-learn/scikit-learn/issues/28530
https://github.com/scikit-learn/scikit-learn/pull/28541
They suggest to use a very recent version of cython and if not possible, to pass this extra parameter to the compiler:
-Wno-error=incompatible-pointer-types
Same error on the main branch (fac58156940ce06982c8c1ff188832128caa4366).
Cython version: 3.0.10
Thanks for the report, won't be able to investigate before a month. Sorry.
Steps to reproduce on a clean container:
podman run --rm -it archlinux
# Install dependencies
pacman -Syu git base-devel fftw opencl-driver cython meson-python \
python-{numpy,scipy,matplotlib,h5py,pyopencl,pyqt5,build,installer,wheel}
# Get the code:
git clone https://github.com/silx-kit/pyFAI.git
cd pyFAI
# Fix incompatible settings:
sed -i -e "/^requires =/,/^\]/{/^[[:space:]]*'ninja',[[:space:]]*$/d}" \
-e "/^requires =/,/^\]/{/^[[:space:]]*'oldest-supported-numpy',[[:space:]]*$/d}" pyproject.toml
# Build:
python -m build --wheel --no-isolation
Bug confirmed:
[27/92] Compiling Cython source /pyFAI/src/pyFAI/ext/sparse_builder.pyx
warning: /pyFAI/src/pyFAI/ext/sparse_builder.pxi:90:8: noexcept clause is ignored for function returning Python object
warning: /pyFAI/src/pyFAI/ext/sparse_builder.pxi:100:15: noexcept clause is ignored for function returning Python object
warning: /pyFAI/src/pyFAI/ext/sparse_builder.pxi:193:24: noexcept clause is ignored for function returning Python object
warning: /pyFAI/src/pyFAI/ext/sparse_builder.pxi:205:15: noexcept clause is ignored for function returning Python object
warning: /pyFAI/src/pyFAI/ext/sparse_builder.pxi:231:14: noexcept clause is ignored for function returning Python object
warning: /pyFAI/src/pyFAI/ext/sparse_builder.pxi:236:15: noexcept clause is ignored for function returning Python object
warning: /pyFAI/src/pyFAI/ext/sparse_builder.pxi:311:12: noexcept clause is ignored for function returning Python object
warning: /pyFAI/src/pyFAI/ext/sparse_builder.pxi:317:15: noexcept clause is ignored for function returning Python object
[41/92] Compiling C object src/pyFAI/ext/_convolution.cpython-312-x86_64-linux-gnu.so.p/meson-generated_src_pyFAI_ext__convolution.pyx.c.o
src/pyFAI/ext/_convolution.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/_convolution.pyx.c: In function ‘__pyx_pf_5pyFAI_3ext_12_convolution_horizontal_convolution’:
src/pyFAI/ext/_convolution.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/_convolution.pyx.c:18069:25: warning: ‘__pyx_v_acc’ may be used uninitialized [-Wmaybe-uninitialized]
18069 | #pragma omp parallel reduction(+:__pyx_v_acc) private(__pyx_t_1, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_15, __pyx_t_16, __pyx_t_17, __pyx_t_18, __pyx_t_19)
| ^~~
src/pyFAI/ext/_convolution.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/_convolution.pyx.c:17896:10: note: ‘__pyx_v_acc’ was declared here
17896 | double __pyx_v_acc;
| ^~~~~~~~~~~
src/pyFAI/ext/_convolution.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/_convolution.pyx.c: In function ‘__pyx_pf_5pyFAI_3ext_12_convolution_2vertical_convolution’:
src/pyFAI/ext/_convolution.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/_convolution.pyx.c:18612:25: warning: ‘__pyx_v_acc’ may be used uninitialized [-Wmaybe-uninitialized]
18612 | #pragma omp parallel reduction(+:__pyx_v_acc) private(__pyx_t_1, __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_15, __pyx_t_16, __pyx_t_17, __pyx_t_18, __pyx_t_19)
| ^~~
src/pyFAI/ext/_convolution.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/_convolution.pyx.c:18439:10: note: ‘__pyx_v_acc’ was declared here
18439 | double __pyx_v_acc;
| ^~~~~~~~~~~
[80/92] Compiling C object src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/meson-generated_src_pyFAI_ext_sparse_utils.pyx.c.o
FAILED: src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/meson-generated_src_pyFAI_ext_sparse_utils.pyx.c.o
cc -Isrc/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p -Isrc/pyFAI/ext -I../src/pyFAI/ext -I/usr/include/python3.12 -fvisibility=hidden -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -fPIC -MD -MQ src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/meson-generated_src_pyFAI_ext_sparse_utils.pyx.c.o -MF src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/meson-generated_src_pyFAI_ext_sparse_utils.pyx.c.o.d -o src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/meson-generated_src_pyFAI_ext_sparse_utils.pyx.c.o -c src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/sparse_utils.pyx.c
src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/sparse_utils.pyx.c: In function ‘__pyx_pf_5pyFAI_3ext_12sparse_utils_12ArrayBuilder___cinit__’:
src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/sparse_utils.pyx.c:45816:17: error: assignment to ‘struct __pyx_obj_5pyFAI_3ext_12sparse_utils_Vector *’ from incompatible pointer type ‘PyObject *’ {aka ‘struct _object *’} [-Wincompatible-pointer-types]
45816 | *__pyx_t_11 = __pyx_t_1;
| ^
src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/sparse_utils.pyx.c: In function ‘__pyx_pf_5pyFAI_3ext_12sparse_utils_12ArrayBuilder_2__dealloc__’:
src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/sparse_utils.pyx.c:45904:16: error: assignment to ‘struct __pyx_obj_5pyFAI_3ext_12sparse_utils_Vector *’ from incompatible pointer type ‘PyObject *’ {aka ‘struct _object *’} [-Wincompatible-pointer-types]
45904 | *__pyx_t_5 = Py_None;
| ^
src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/sparse_utils.pyx.c: At top level:
src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/sparse_utils.pyx.c:61747:12: warning: ‘__pyx_memview_set_object’ defined but not used [-Wunused-function]
61747 | static int __pyx_memview_set_object(const char *itemp, PyObject *obj) {
| ^~~~~~~~~~~~~~~~~~~~~~~~
src/pyFAI/ext/sparse_utils.cpython-312-x86_64-linux-gnu.so.p/src/pyFAI/ext/sparse_utils.pyx.c:61742:20: warning: ‘__pyx_memview_get_object’ defined but not used [-Wunused-function]
61742 | static PyObject *__pyx_memview_get_object(const char *itemp) {
| ^~~~~~~~~~~~~~~~~~~~~~~~
I discussed with Cython developers and it is likely the warning about noexcept
are not justified ...
This narrows the regression to:
cython 3.0.11
gcc 14.2.1
Debian is building pyFAI with gcc 14.1 and the same version of cython. Could this be to be a regression from gcc ?
The bug is the same in debian experimental:
The Meson build system
Version: 1.5.1
Source dir: /pyFAI
Build dir: /pyFAI/build
Build type: native build
Project name: pyFAI
Project version: 2024.7.0a0
C compiler for the host machine: cc (gcc 14.2.0 "cc (Debian 14.2.0-3) 14.2.0")
C linker for the host machine: cc ld.bfd 2.43.1
C++ compiler for the host machine: c++ (gcc 14.2.0 "c++ (Debian 14.2.0-3) 14.2.0")
C++ linker for the host machine: c++ ld.bfd 2.43.1
Cython compiler for the host machine: cython (cython 3.0.11)
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program python3 found: YES (/usr/bin/python3)
Library m found: YES
Dependency openmp found: YES 4.5 (cached)
@picca there is trouble ahead !
Issue with GCC-14 (.2) is confirmed:
export CC=gcc-13
provides a work around.
The error is spotted on this line: https://github.com/silx-kit/pyFAI/blob/main/src/pyFAI/ext/sparse_utils.pyx#L197
Since it is in some deprecated code, I guess the time has come to remove it.
My build fails with the following:
Distro: Arch Linux GCC: 14.1.1 Python: 3.12.4 Meson: 1.5.0 Ninja: 1.12.1 NumPy: 2.0.0 Last pyFAI successfully built: 2023.09