You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
These started as triage candidates, not confirmed bugs. A 30-day automated
review surfaced recurring intermittent CI failures as a starting point for
investigation. Each candidate could resolve to a code issue, a test
issue, or a CI/environment issue. As candidates are root-caused, this
issue is updated with the final disposition — see Resolution status below.
Several "looked numerically unstable" candidates turned out to have concrete
non-tolerance root causes; the term "flaky" is deliberately avoided for those.
The environment is often the root cause (e.g. timeouts under Valgrind), but
not always — see ShapeLabelMapFixture, which masqueraded as tolerance
instability and was in fact a sign-arbitrary algorithmic result.
Summary
A 30-day review (2026-05-25 → 06-25) of ITK CI failures across GitHub Actions
(ITK.Pixi, ITK.Arm64) and CDash (Azure DevOps + Kitware nightlies;
~18,920 failed-test rows, 676 distinct test names) found that most red CI is CI-environment/infrastructure, with a small set of tests that fail
intermittently across unrelated commits and multiple platforms. This issue
tracks both so fixes/mitigations can be prioritized.
Methodology & how to read the tables
Failures were aggregated by test name × platform × commit/day. The signal that
separates a likely-recurring failure from a one-off breakage:
Cross-commit (fails on several unrelated source revisions) and/or
Cross-platform + multi-day (fails on Linux and Windows and macOS over
many distinct days).
A test failing many times on a single day / single build is almost always a
transient breakage that was then fixed — those are excluded below.
Resolution status (updated as candidates are root-caused)
Candidate
Final classification
Disposition
ShapeLabelMapFixture
Two causes, both concrete (not tolerance instability).*_Direction cases: OBB origin is a corner of a sign-arbitrary eigenvector frame → two equally-correct answers; latent defect disabled since 2017 (0d9a5ed6), re-exposed (not introduced) by the VNL→Eigen backend swap #6475. Non-Direction cases: genuine FP-model scalar precision, Windows-MSVC-only.
In progress in #6521: full-precision baselines for the scalar group + invariant-geometry assertions (frame-invariant OBB center + vertex-set membership) for the sign-arbitrary group. Origin corner to be documented non-portable.
ParallelSparseFieldLevelSetRobustness.*
Real test/code issue, surfaced under Valgrind (per @blowekamp: Valgrind defects reproduce locally; not a deadlock — #6519 closed after 770+ runs showed zero hangs). Earlier deadlock hypothesis withdrawn.
Open: address the Valgrind-reported defects; the 300 s watchdog self-aborts under CI load are a secondary CI-load symptom.
itkComposeBigVectorImageFilterTest
CTest timeout under memory pressure (100-channel VectorImage, no explicit TIMEOUT, RESOURCE_LOCK MEMORY_SIZE).
Originally hypothesized as round-trip comparison (VTK ASCII FP formatting/precision). 2026-07-10 evidence points earlier in the test: two windows-2022 Pixi-Cxx failures in 0.04 s with no diagnostic output, on unrelated PRs (#6569, #6577); one passed on rerun of an identical tree.
Open: capture the test's stderr in the Pixi workflow to disambiguate startup/first-read failure from FP precision; still intermittent as of 2026-07-10.
itkMCI_DSC_case_10_binary
New candidate 2026-07-10: SEGFAULT on macos-15 Pixi-Cxx (PR #6576, diff unrelated to the MorphologicalContourInterpolation remote module); sibling case_2 passed in 210 s on the same run. RUNS_LONG under a loaded runner fits the memory/load-pressure family, but one occurrence does not yet separate code from environment.
Open: track for cross-commit recurrence.
A. CI-environment / infrastructure failure modes (dominate red runs)
These are not test bugs; they prevent runs from producing a meaningful result.
276× / 18 days; concentrated in valgrind/coverage.
itkMeshFileReadWriteTest01
4 unrelated commits; ubuntu+windows. +2 windows-2022 Pixi occurrences 2026-07-10 (see comment thread); rerun-green on identical tree.
Explicitly excluded (single-day transients — NOT recurring)
ComputeImageSpectralDensityTest (06-12), GeneralizedEigenDecomposition.IdentityPencilMatchesStandard
(06-19), itkImageFileWriterStreamingTest1_2/_3 (06-14), and a 120-test mass
red on one Windows nightly (06-25) — each a single bad build/commit that was
fixed, not recurring.
Lesson learned
A test that flaps with the texture of numerical instability is not necessarily
a tolerance problem. When two backends can each return a different correct
answer (sign of an eigenvector, ordering of a degenerate decomposition), the
test is asserting an arbitrary representative — the fix is an invariant
assertion, not a looser bound. ShapeLabelMapFixture is the worked example:
every signal above the ITK test interface pointed at FP tolerance; the real
cause (algorithmic backend swap producing a sign-flipped but equally-correct
result) was only found by tracing below the test interface.
Suggested next steps
Treat Section A as infrastructure work (ExternalData fetch retry/caching;
reconsider warnings-as-fatal on ARM) — likely the biggest reliability payoff.
Treat Section B per the Resolution status table; confirm/deny each
before any code change.
Happy to break any individual candidate into its own focused issue.
Important
These started as triage candidates, not confirmed bugs. A 30-day automated
review surfaced recurring intermittent CI failures as a starting point for
investigation. Each candidate could resolve to a code issue, a test
issue, or a CI/environment issue. As candidates are root-caused, this
issue is updated with the final disposition — see Resolution status below.
Several "looked numerically unstable" candidates turned out to have concrete
non-tolerance root causes; the term "flaky" is deliberately avoided for those.
Summary
A 30-day review (2026-05-25 → 06-25) of ITK CI failures across GitHub Actions
(
ITK.Pixi,ITK.Arm64) and CDash (Azure DevOps + Kitware nightlies;~18,920 failed-test rows, 676 distinct test names) found that most red CI is
CI-environment/infrastructure, with a small set of tests that fail
intermittently across unrelated commits and multiple platforms. This issue
tracks both so fixes/mitigations can be prioritized.
Methodology & how to read the tables
Failures were aggregated by test name × platform × commit/day. The signal that
separates a likely-recurring failure from a one-off breakage:
many distinct days).
A test failing many times on a single day / single build is almost always a
transient breakage that was then fixed — those are excluded below.
Resolution status (updated as candidates are root-caused)
ShapeLabelMapFixture*_Directioncases: OBB origin is a corner of a sign-arbitrary eigenvector frame → two equally-correct answers; latent defect disabled since 2017 (0d9a5ed6), re-exposed (not introduced) by the VNL→Eigen backend swap #6475. Non-Directioncases: genuine FP-model scalar precision, Windows-MSVC-only.ParallelSparseFieldLevelSetRobustness.*itkComposeBigVectorImageFilterTestVectorImage, no explicitTIMEOUT,RESOURCE_LOCK MEMORY_SIZE).TIMEOUT.PythonLazyImportTimeMaskedAssignFixtureCompleted (Failed)); remote-module test (*-Favorite-Remotesnightly), not in core tree.itkMeshFileReadWriteTest01Pixi-Cxxfailures in 0.04 s with no diagnostic output, on unrelated PRs (#6569, #6577); one passed on rerun of an identical tree.itkMCI_DSC_case_10_binaryPixi-Cxx(PR #6576, diff unrelated to the MorphologicalContourInterpolation remote module); siblingcase_2passed in 210 s on the same run.RUNS_LONGunder a loaded runner fits the memory/load-pressure family, but one occurrence does not yet separate code from environment.A. CI-environment / infrastructure failure modes (dominate red runs)
These are not test bugs; they prevent runs from producing a meaningful result.
ITK.Pixirunsexit 255"warnings-as-fatal" (0 real test failures)ITK.Arm64runsci_completed_successfully)ITK.PixirunsWindows11-VS22x64-RelWithDebInfo-Favorite-Remotes)B. Tests that fail intermittently across commits/platforms
These began as candidates; current understanding is in Resolution status above.
The original evidence is retained here for reference.
ShapeLabelMapFixture(53D_*cases)Directioncases Windows-MSVC-only (105×); 2_Directioncases cross-platform (Win+macOS+Linux).ParallelSparseFieldLevelSetRobustness.SweepRepeat/.ConcurrentMultiPipelineitkComposeBigVectorImageFilterTestPythonLazyImportTimeMaskedAssignFixture.SetGetPrintitkMeshFileReadWriteTest01Explicitly excluded (single-day transients — NOT recurring)
ComputeImageSpectralDensityTest(06-12),GeneralizedEigenDecomposition.IdentityPencilMatchesStandard(06-19),
itkImageFileWriterStreamingTest1_2/_3(06-14), and a 120-test massred on one Windows nightly (06-25) — each a single bad build/commit that was
fixed, not recurring.
Lesson learned
A test that flaps with the texture of numerical instability is not necessarily
a tolerance problem. When two backends can each return a different correct
answer (sign of an eigenvector, ordering of a degenerate decomposition), the
test is asserting an arbitrary representative — the fix is an invariant
assertion, not a looser bound.
ShapeLabelMapFixtureis the worked example:every signal above the ITK test interface pointed at FP tolerance; the real
cause (algorithmic backend swap producing a sign-flipped but equally-correct
result) was only found by tracing below the test interface.
Suggested next steps
reconsider warnings-as-fatal on ARM) — likely the biggest reliability payoff.
before any code change.
Happy to break any individual candidate into its own focused issue.