aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/texture_cache/image_base.cpp
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-28 17:34:48 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-28 17:34:48 -0400
commita6083a697311fe9cfa48489e03f50c14f38a3aff (patch)
tree7f50947577e67793fe3b1872e6e51991e2dd10a4 /src/video_core/texture_cache/image_base.cpp
parentc777b4fe471ae3341eea3adf722cd17a64322f49 (diff)
Texture cache: fix use-after-free in async texture decode
TickAsyncDecode locked a finished decode's mutex, erased the context (freeing the mutex) and only then let the lock go out of scope, unlocking freed memory. With ASTC re-compressed on the CPU (accelerate_astc=CpuAsynchronous) title 1 hit this a few minutes in: cdb reported "Free Heap block modified after it was freed" at the mutex offset, and a run without the debugger crashed. The lock is now released before the erase. Also, deleting an image while it is being decoded (deletions other than the collector, which already skips them) cancels the decode instead of uploading into a freed slot. Verified under cdb past 330 s (failed at 243 s twice before).
Diffstat (limited to 'src/video_core/texture_cache/image_base.cpp')
0 files changed, 0 insertions, 0 deletions