Skip to content

Disable ccache for libxc's targets - #80

Merged
ryanmrichard merged 1 commit into
masterfrom
fix/no-ccache-for-libxc
Aug 12, 2026
Merged

Disable ccache for libxc's targets#80
ryanmrichard merged 1 commit into
masterfrom
fix/no-ccache-for-libxc

Conversation

@ryanmrichard

Copy link
Copy Markdown
Member

Summary

  • A ccache entry for one of libxc's object files was found corrupted/truncated (most likely from a prior cancelled or OOM-killed CI run) and served as a false hit: it built and linked cleanly but crashed with SIGILL at runtime deep inside a libxc functional evaluation (test_unit_scf/test_integration_scf's libxc SVWN3 tests, seen intermittently on NWChemEx/SCF#70's test_cmake_build (ubuntu-latest, gcc-14) leg).
  • Reproduced and confirmed: a from-scratch build (no ccache) never crashed; manually deleting the ccache-Linux-gcc-14-* GitHub Actions cache and re-running fixed the real PR job. Root cause is a bad cache entry, not libxc's source, GCC, or CPU/ISA.
  • The corrupted entry has since been cleared manually, but the underlying risk remains: ccache is reused across CI runs (and potentially different physical hosts) via a restore-key fallback, so this class of bug can recur silently.
  • Fix: clear C_COMPILER_LAUNCHER/CXX_COMPILER_LAUNCHER on libxc's targets (xc, and xcf03 if Fortran bindings are enabled) right after FetchContent_MakeAvailable(libxc), so this one dependency is never routed through ccache. Its own build is a few seconds, and FetchContent already caches the source checkout separately, so the object-level reuse given up here is cheap insurance.

Test plan

  • Minimal local repro confirming set_target_properties(<tgt> PROPERTIES C_COMPILER_LAUNCHER "") after add_library correctly drops the LAUNCHER from that target's Ninja compile rule while a sibling target keeps the global launcher.
  • Once merged, SCF PR Fix broken FetchContent: point chemcache at master #70 should no longer be able to hit this SIGILL class of failure regardless of ccache state.

🤖 Generated with Claude Code

A ccache entry for one of libxc's object files was found corrupted/
truncated (most likely from a prior cancelled or OOM-killed CI run) and
served as a false hit: it built and linked cleanly but crashed with SIGILL
at runtime deep inside a libxc functional evaluation. Reproduced and
confirmed fixed by manually clearing the ccache-Linux-gcc-14-* cache entry
on NWChemEx/SCF#70.

Clear C_COMPILER_LAUNCHER/CXX_COMPILER_LAUNCHER on libxc's targets right
after FetchContent_MakeAvailable so this specific dependency never goes
through ccache. Its own build is a few seconds, and FetchContent already
caches the source checkout separately, so the object-level reuse ccache
would provide here is cheap to give up in exchange for not silently
resurrecting this bug from a future corrupted cache entry.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@ryanmrichard
ryanmrichard merged commit 37d1b7f into master Aug 12, 2026
8 checks passed
@ryanmrichard
ryanmrichard deleted the fix/no-ccache-for-libxc branch August 12, 2026 16:55
@github-actions

Copy link
Copy Markdown

🚀 [bumpr] Bumped!
New version:v0.0.20
Changes:v0.0.19...v0.0.20

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant