CNA-BUG-271: known_bugs.md still lists the FNA3D dangling-device use-after-free as OPEN and a lost repeated SpriteBatch Begin/End as a live symptom, although the source has fixed both
Evidence basis: source-verified at the pinned commit; 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.
CNA's own known-bug list keeps two entries whose fixes are in the source and pinned by registered tests: FNA3D resource renderers now hold a shared device state that the renderer clears (Fna3d_Device_Lifetime), and repeated SpriteBatch Begin()/End() cycles on VULKAN are pinned by Vulkan_SpriteBatch_MultiBeginEnd.
- Identifier
CNA-BUG-271- Category
- Bug
- Subsystem
- Documentation & release tooling
- Status
- Open
- Verified against
- CNA
009d40f5(009d40f5dd085c4e674d3479675fac84b12b3e0a) - Severity
- Low (a triage suggestion, not a project priority)
- Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- known_bugs.md, the entries for FNA3D resource renderers that outlive their device and for several SpriteBatch Begin/End cycles in one frame
Expected behaviour
A known-bug list states what still fails: an entry whose fix has landed and is pinned by a registered test is removed or marked fixed, so that a reader does not take it for open work.
Actual behaviour at TARGET
known_bugs.md says of the first entry “Status: OPEN”: an FNA3D resource renderer keeps a raw FNA3D_Device* guarded only by a null test, so a resource that outlives its GraphicsDevice frees through a dangling pointer. At the snapshot the destructors in Fna3dResources.cpp read the device through LiveDevice(deviceState_), a shared Fna3dDeviceState whose pointer the renderer's own destructor sets to null, and skip FNA3D_AddDisposeTexture and the render-buffer release when it is null; the test Fna3d_Device_Lifetime (fna3d_device_lifetime_test.cpp) destroys the renderer while every wrapper is alive.
The second entry, “Multiple SpriteBatch Begin/End in one frame discards all but the last” (backend VULKAN, dated 2026-06-27), carries no status line and reads as a live symptom, while the VULKAN examples CMake file registers Vulkan_SpriteBatch_MultiBeginEnd under the comment that several Begin()/End() cycles per frame must all render.
Source locations
known_bugs.md— the two entriesmodules/renderers/fna3d/src/Fna3dResources.cpp— LiveDevice and the resource-renderer destructorsmodules/renderers/fna3d/examples/fna3d_device_lifetime_test.cpp— destroys the renderer while every wrapper is alivemodules/renderers/vulkan/examples/CMakeLists.txt— Vulkan_SpriteBatch_MultiBeginEnd registration (Task 664)
Evidence
Read at 009d40f5; nothing was built or executed, so the two fixes are read from the source and the registered tests, not observed. The commit that introduced the shared device state and its test (d5c3460db, 2026-08-13) is an ancestor of the snapshot, while the FNA3D entry says it was found on 2026-08-14; the entry was not updated. The site's Contribute page had turned the first entry into an open task and was corrected during this audit.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
The two fixes are pinned by Fna3d_Device_Lifetime and Vulkan_SpriteBatch_MultiBeginEnd; nothing checks that known_bugs.md agrees with them.
Regression test
Remove the two entries, naming the fixing tasks, or mark them fixed; a document check could compare each entry's status line with the plan that closes it.
Blast radius
Readers who take known_bugs.md for CNA's list of open defects; the site's own Contribute page had done so.
Workaround
Treat the source and the registered tests as authoritative.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- User guide
- Rendering backends
- Known issues
- Bug index