If DownloadHandlerTexture.GetContent is used to query a texture and that texture is explicitly destroyed prior to the destruction of DownloadHandlerTexture, this can lead to an access violation in the destructor.
The destructor tries to dereference m_Texture if it was queried, where it could've been explicitly destroyed as a user-owned texture prior to this destruction.
if (m_Queried)
RemoveGarbageCollectSharedAssetsExclusion(m_Texture->GetInstanceID());
A straightforward way to reproduce this is with the process in the attached project where Dispose isn't expicitly called, and handler destruction is left to GC. I've found -debugallocator needs to be used for this to reliably be detected.
Steps to reproduce:
1. Either build a player using the attached project, or the prebuilt exe.
2. Run the player exe with -debugallocator
3. Press 'D' to trigger the download event
Actual results:
An access violation should occur when running with -debugallocator
Expected results:
No access violation or crash
Reproducible with versions: Seen on 2022.3.22f1, looks present on all
Tested on (OS): Windows