Hi! On 2023-11-09 05:11, Rafael Laboissière wrote: > The Fortran example x09f.f90, which is exercised during the building of > plplot, now fails on armhf, due to the use of the compiler option > -fstack-clash-protection.
The problem seems unrelated to stach-clash-protection I think, enabling the feature on armhf just made it evident. Building the program on a x86 system without -fstack-clash-protection but with -fsanitize=address, it segfaults: /usr/bin/gfortran -g -O2 x09f.f90 -o x09f -I/usr/lib/x86_64-linux-gnu/fortran/modules/plplot -lplplotfortran -fsanitize=address ./x09f -dev ps -o /dev/null Program received signal SIGSEGV: Segmentation fault - invalid memory reference. The SIGSEGV happens in plplot_single::pltransformf2c, which is about where the SIGBUS happens on armhf with stack-clash-protector enabled: Program received signal SIGSEGV, Segmentation fault. 0x00007ffff5a000a8 in ?? () (gdb) bt #0 0x00007ffff5a000a8 in ?? () #1 0x00007ffff7f05683 in plplot_single::pltransformf2c (x=x@entry=0, y=y@entry=1, tx=4.9406564584124654e-324, ty=6.9533558054215925e-310, data=<error reading variable: Attempt to dereference a generic pointer.>) at ./bindings/fortran/plplot_single.f90:114 Here's the SIGBUS on armhf with stack-clash-protection: Program received signal SIGBUS, Bus error. 0x00400822 in x09f::mypltr (x=0, y=1, xt=0, yt=0) at x09f.f90:38 38 xt = tr(1) * x + tr(2) * y + tr(3) (gdb) bt #0 0x00400822 in x09f::mypltr (x=0, y=1, xt=0, yt=0) at x09f.f90:38 #1 0xf7f58a06 in plplot_single::pltransformf2c (x=<optimized out>, y=<optimized out>, tx=-9.8841854819221187e+269, ty=-nan(0xe5db400000001), data=<optimized out>) at ./bindings/fortran/plplot_single.f90:114