Repository navigation
Test loops that exit when their counter wraps around - #696
Merged
Merged
Conversation
maleadt
marked this pull request as draft
October 14, 2026 10:33
maleadt
marked this pull request as ready for review
October 14, 2026 13:17
The SPIR-V back-end lowers `i += 1; i == 0` to OpIAddCarry, and IGC's
optimizer carries the {i64, i1} result through the loop PHI. IGC's
legalization (libigc 2.34.4 through 2.41.5) then erased the intrinsic
while the PHI still referenced it: a use-after-free that aborted the
Julia 1.12 CI job in `findmax(abs, x)` under `--check-bounds=yes` and
corrupted the heap silently elsewhere. Fixed by the IGC backport in
libigc_jll 2.34.4+5.
maleadt
force-pushed
the
tb/igc-find-crash
branch
from
October 14, 2026 13:17
31c5528 to
3b3b7cc
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #696 +/- ##
==========================================
- Coverage 81.35% 80.65% -0.70%
==========================================
Files 52 51 -1
Lines 4092 3971 -121
==========================================
- Hits 3329 3203 -126
- Misses 763 768 +5 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Regression test for the Julia 1.12 CI crash in
gpuarrays/indexing find(since build 1785, the GPUArrays 12 bump):findmax(abs, x)under--check-bounds=yesaborted withfree(): invalid next size (fast)inside libigc duringzeModuleCreate.The SPIR-V back-end lowers
i += 1; i == 0toOpIAddCarry, and IGC's optimizer sinks the extracts of the{i64, i1}result through the loop PHI. IGC's legalization (libigc 2.34.4 through 2.41.x) then erased the intrinsic while that PHI still referenced it, a use-after-free that code generation read later. Whether glibc notices is heap-layout dependent, which is why only the 1.12 job crashed while 1.13 passed with a corrupted heap; under a guard-page allocator the read is deterministic.The fix is backported in libigc_jll 2.34.4+5 (JuliaPackaging/Yggdrasil#15125; the first attempt in JuliaPackaging/Yggdrasil#15103, 2.34.4+4, still double-freed the split PHI). Intel fixed the same bug independently in intel/intel-graphics-compiler@522dc7026 (v2.42.0). Nothing changes on the oneAPI.jl side besides this test, whose kernel is the minimal shape that triggers the bug.
CI on 1.12 goes green once libigc_jll 2.34.4+5 is registered.