When it crashes your best two options are first to catch the crash in a debugger (which stops execution precisely at the crash) and second best to capture a crash dump (which is similar but with somewhat less hardware information).
Without that, you can look at the logs and hope to find something.
There are a tremendous number of things it could be. You mention graphics a few times, sure there could be some issues there, possibly with unloading a resource, maybe data being unloaded twice. Or it could be something to do with physics, I've seen corrupt objects cause difficulty and corruption when the object is unloaded. Or it could be something with serialization or deserialization. Or it could be countless other things which we can guess and speculate about, but still be no closer to truth.
Unreal includes the source code. If you're using the releases from Epic directly they have the symbol files for the official builds available through the Launcher. If you built the engine locally, use a Development build and attach a debugger. The debugger is likely where you will find your answers.