CNA-BUG-206: Software_XnaLineCoverage passes when a scene differs from the XNA reference: run-oracle-corpus-diff-software.sh fails only on render errors
Evidence basis: source-verified at the pinned commit; executed for this entry (the Evidence section names exactly what was run); tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
The CTest described as the exact Software regression for the two aliased-line scenes runs a script that prints DIFF for a pixel mismatch and still exits 0; only a missing reference or a failed render makes it fail.
- Identifier
CNA-BUG-206- Category
- Bug
- Subsystem
- Testing & evidence
- Status
- Open
- Verified against
- CNA
009d40f5(009d40f5dd085c4e674d3479675fac84b12b3e0a) - Severity
- Low (a triage suggestion, not a project priority)
- Evidence basis
- Reproduced: executed for this entry (the Evidence section names exactly what was run)
- Tests touching this area
- Yes: see Current tests
- Affected contract
- CTest Software_XnaLineCoverage (modules/renderers/software/examples/CMakeLists.txt)
Expected behaviour
The registration comment calls the two measured line scenes an exact Software regression (SOFTWARE-344). The EasyGL twin, EasyGL_XnaLineCoverage, fails on any mismatch through run-oracle-corpus-diff-easygl.sh.
Actual behaviour at TARGET
run-oracle-corpus-diff-software.sh counts DIFFERENT and RENDER_FAILED separately and exits 1 only when RENDER_FAILED is non-zero. A mismatch, and equally an xna-diff.py crash such as a missing Pillow module, is printed as DIFF and the test passes. cna_register_renderer_test adds no failure regular expression for the Software renderer.
Source locations
scripts/run-oracle-corpus-diff-software.sh— exit status depends only on RENDER_FAILEDmodules/renderers/software/examples/CMakeLists.txt— Software_XnaLineCoverage registration and its SOFTWARE-344 commentscripts/run-oracle-corpus-diff-easygl.sh— the EasyGL twin that fails on mismatch
Evidence
Checked by reading at 009d40f5; not executed.
Focused reproduction
# Illustrative; not run. In a SOFTWARE test tree, corrupt one reference image, then:
ctest -R '^Software_XnaLineCoverage$' --output-on-failure
# Expected: failure. Actual by reading: the scene prints DIFF and the test passes.
Current tests
Only the script itself; nothing tests the script's exit contract.
Regression test
Make the script exit non-zero when DIFFERENT is non-zero (as the EasyGL script does), and add a self-test with a deliberately different reference.
Blast radius
The Software renderer's line-rasterisation regression guard; no CI workflow runs it at present (see the Known Issues entry on oracle comparisons).
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Internals
- SOFTWARE renderer internals
- Known issues
- Bug index