Reproduction
Build NEO-2-QL at 4b00b887b6a9c37928b6575130b9ad494d2cdc2b
with GNU bounds checks:
cmake -S . -B /tmp/neo2-debug -G Ninja \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_Fortran_FLAGS='-fcheck=all -fbacktrace -g -O0' \
-DLIBNEO_REF=13387c26305fec88158ff109516a10729e2df206
cmake --build /tmp/neo2-debug --target neo_2_ql.x
Run one electron species on a HELCORE-type l=1 Boozer geometry with the
fileless, driven non-axisymmetric path:
&ntv_input
isw_ntv_mode = 0
isw_qflux_NA = 1
in_file_pert = 'none'
isw_m_phi_input = 1
m_phi_input = -1
isw_ripple_solver = 3
isw_hel_drive = 1
m_theta_hel = 1
hel_phim_re = 1.0d0
/
The case uses iota=0.99, nperiod=1000, phi_split_mode=1,
phi_place_mode=1, bin_split_mode=0, max_solver_try=10, and one MPI rank.
It triggers normal ierr=3 mode-3 refinement retries, completes the local
propagator solves, and fails during intermediate propagator joining.
Expected
After successful local solves, the global propagators join and only final,
globally joined transport output is accepted. If the joining matrix is
singular or an argument is invalid, the diagnostic retains the LAPACK status,
join tags, and dimensions and exits through the normal MPI finalization path.
Actual
The run stops after the local solves:
solving completed
Error from Joining, ierr= 2
Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG
The control path is:
NEO-2-QL/propagator.f90:1403: intermediate join_ripples_interface
NEO-2-QL/propagator.f90:1830: join_ripples_nn
NEO-2-QL/join_ripples_int.f90:307-308: join_ripples
NEO-2-QL/join_ripples.f90:138: gbsv
NEO-2-QL/join_ripples.f90:140-142: every nonzero LAPACK info is reduced
to ierr=2
COMMON/lapack_band.f90 calls DGBSV, where info<0 means an illegal
argument and info>0 means an exact zero U pivot. The actual value is lost,
so the present diagnostic cannot distinguish these cases. The IEEE flag is
reported at the explicit STOP; it is not established as the cause.
The run leaves qflux_ntv.dat and qflux_symm.dat, but those files are
written inside local ripple solves before global joining. They are partial
outputs and are not trustworthy as final transport results.
An optimized build diverges: it reaches join_ends, then faults while
assigning y_ntv_mod in ntv_mod.f90. This build-dependent endpoint raises
an initialization, lifetime, or ordering concern in addition to possible
join conditioning.
Environment
Evidence
The bounds-checked run took 147 s and used about 810 MiB RSS. It had no
npl(istep +/- 2) bounds failure, heap corruption, NaN, repeated zhseqr
failure, or segmentation fault before the join. Three mode-3 retries completed
normally. No final ntv_out, fulltransp, or multispecies HDF5 result was
produced.
Reproduction
Build NEO-2-QL at
4b00b887b6a9c37928b6575130b9ad494d2cdc2bwith GNU bounds checks:
Run one electron species on a HELCORE-type
l=1Boozer geometry with thefileless, driven non-axisymmetric path:
The case uses
iota=0.99,nperiod=1000,phi_split_mode=1,phi_place_mode=1,bin_split_mode=0,max_solver_try=10, and one MPI rank.It triggers normal
ierr=3mode-3 refinement retries, completes the localpropagator solves, and fails during intermediate propagator joining.
Expected
After successful local solves, the global propagators join and only final,
globally joined transport output is accepted. If the joining matrix is
singular or an argument is invalid, the diagnostic retains the LAPACK status,
join tags, and dimensions and exits through the normal MPI finalization path.
Actual
The run stops after the local solves:
The control path is:
NEO-2-QL/propagator.f90:1403: intermediatejoin_ripples_interfaceNEO-2-QL/propagator.f90:1830:join_ripples_nnNEO-2-QL/join_ripples_int.f90:307-308:join_ripplesNEO-2-QL/join_ripples.f90:138:gbsvNEO-2-QL/join_ripples.f90:140-142: every nonzero LAPACKinfois reducedto
ierr=2COMMON/lapack_band.f90callsDGBSV, whereinfo<0means an illegalargument and
info>0means an exact zero U pivot. The actual value is lost,so the present diagnostic cannot distinguish these cases. The IEEE flag is
reported at the explicit
STOP; it is not established as the cause.The run leaves
qflux_ntv.datandqflux_symm.dat, but those files arewritten inside local ripple solves before global joining. They are partial
outputs and are not trustworthy as final transport results.
An optimized build diverges: it reaches
join_ends, then faults whileassigning
y_ntv_modinntv_mod.f90. This build-dependent endpoint raisesan initialization, lifetime, or ordering concern in addition to possible
join conditioning.
Environment
fix/flux-pumping/helcore-grid-parity4b00b887b6a9c37928b6575130b9ad494d2cdc2b13387c26305fec88158ff109516a10729e2df206Evidence
The bounds-checked run took 147 s and used about 810 MiB RSS. It had no
npl(istep +/- 2)bounds failure, heap corruption,NaN, repeatedzhseqrfailure, or segmentation fault before the join. Three mode-3 retries completed
normally. No final
ntv_out,fulltransp, or multispecies HDF5 result wasproduced.