Description
xTB 6.7.1 (edcfbbe) consistently crashes with SIGSEGV during gradient computation for large systems (~426 atoms), immediately after successful SCF convergence. The crash occurs in the Klopman-Ohno Coulomb integral code (klopmanohno.f90), regardless of method (GFN1/GFN2), solvent model, or parallelization settings.
Environment
- xTB version: 6.7.1 (edcfbbe), compiled 2024-07-22 with ifort
- OS: Linux (CentOS 7, x86_64)
- Installation: pre-compiled binary from GitHub releases
Steps to Reproduce
- Prepare a 426-atom system (Bi-water interface, 64 Bi + 362 water molecules)
- Run a single-point or optimization calculation:
xtb input.xyz --gfn1 --parallel 1 2>&1
SCF converges normally after ~60-80 iterations
4. SIGSEGV occurs during gradient computation
Test Matrix
Config
SCF
Result
GFN1, no solvent, serial
✅ converged in 80 iters
SIGSEGV
GFN1 + ALPB water, serial
✅ converged in 61 iters
SIGSEGV
GFN1 + ALPB water, 64 threads
✅ converged
SIGSEGV
GFN2, no solvent, serial
✅ converged
SIGSEGV
GFN2 + ALPB water, 64 threads
❌ crashes during init
SIGSEGV (init)
Same input, 330-atom water box
✅
✅ No crash
Stack Trace
Copy code to clipboard
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
xtb 000000000046E88A Unknown Unknown Unknown
xtb 0000000002D1BD40 Unknown Unknown Unknown
xtb 0000000000E16DFD xtb_coulomb_klopm 508 klopmanohno.f90
xtb 0000000002C45313 Unknown Unknown Unknown
xtb 0000000002BFEF40 Unknown Unknown Unknown
xtb 0000000002BCBB08 Unknown Unknown Unknown
xtb 0000000000E16B63 xtb_coulomb_klopm 508 klopmanohno.f90
xtb 0000000000E13B64 xtb_coulomb_klopm 460 klopmanohno.f90
xtb 0000000000C2F0DA xtb_scf_mp_scf_.A 798 scf_module.F90
xtb 00000000008FFEAF xtb_xtb_calculato 258 calculator.f90
xtb 0000000000438C70 xtb_prog_main_mp_ 687 main.F90
xtb 0000000000450EA2 MAIN__ 57 primary.f90
Key Observations
• SCF always converges — the crash only happens when computing gradients
• Crash point: klopmanohno.f90 lines 460 and 508 (Klopman-Ohno Coulomb integral derivatives)
• Not caused by: solvent model (happens without GBSA/ALPB), OpenMP threading (happens serial), stack size (ulimit -s unlimited doesn't help), UHF or electronic temperature
• System size threshold: 330-atom system works fine; 426-atom system triggers the bug
• GFN-FF works perfectly on the same system (different code path, no Klopman-Ohno integrals)
• SCF output is normal with reasonable energies (~ -849 Eh for GFN1, ~ -849 Eh with ALPB)
Suspected Cause
Array dimension mismatch in klopmanohno.f90 — likely a fixed-size allocatable or stack array that overflows when the number of atom pairs exceeds a threshold around 400 atoms during gradient evaluation. The integral evaluation during SCF uses a different code path that doesn't hit the same limit.
Workaround
Use GFN-FF for large systems (> ~350 atoms), or reduce system size below the threshold for GFN1/GFN2 calculations.
Description
xTB 6.7.1 (edcfbbe) consistently crashes with SIGSEGV during gradient computation for large systems (~426 atoms), immediately after successful SCF convergence. The crash occurs in the Klopman-Ohno Coulomb integral code (
klopmanohno.f90), regardless of method (GFN1/GFN2), solvent model, or parallelization settings.Environment
Steps to Reproduce