Report FInstancedStaticMeshSceneProxy crash issue

Hello, When I Change a map, sometimes occur a crash.
Write below assumed crash’s scenario.

  • Main Thread release UIntancedStaticMeshComponent and UStaticMesh and call GC.
  • But render command is not flushed before GC, so access StaticMesh->SpeedTreeWind.IsValid() in InstancedRenderData.ReleaseResource,and crash.

310885-image-15.png

when analyze this dump, I can see Main Thread’s Callstack and Rendering Thread’s Callstack, Attach it below.

Main Thread


Rendering Thread


although it occured when LoadMap, but I think it can occur when release a resource and GC.

please check, Have a nice day. :slight_smile:

Hello, I am having the same crash it took quite a bit of time to track it down as other warnings, map checks and errors were present were eliminated, and what’s left was this debug dump in VS of my ‘Debug packages’ crashes using source compiled UE4 4.24.3.

Loading Persistent_Base with the world built with World Composer enabled and buildings and areas streamed in as needed. I really need to figure this out as if you press new game or load game I crash 3/4 times due to this error.

Thank you.

The Fix to this is to ‘Unload level’ Persistent_base level before node ‘Open level’ Persistent_base
thus skipping the cleanup process
there’s an odd hitch for a second as the engine goes ok close it and open it
but no crash

so my assumption is that when the Persistent_base level is open
you go to open Persistent_base the same level for new game or load
and the engine has to cleanup that level
but sometimes cleanup isn’t done in time and you crash.
Simply unload it first in a BP_Gamecontroller and call Open right after.

I actually run an Array that checks all levels in my game that are open unloads them, then unloads the Persistent_Base. World Settings I’m using World Composer so everything under a Base Level. So once everything is unloaded I load it again and no crash.

Thanks for your comment.
My code is only call “ClientTravel(“NewMapName”, ETravelType::TRAVEL_Absolute);” without any unload process.
But, I don’t know how to Unload previous level In PlayerController side.
Your suggestion is call GetWorld()->RequestUnload(Current_Persistent_Level) ?
I wonder your reply because I dont know how to do well…
Thanks, again! Have a nice day. :slight_smile:

Hey - we’re having these exact same issue? Did you manage to solve this one?