Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000018

I did end up finding the cause of this crash. It was some really bad code. I think back when I wrote this code, I was trying to write a simple delay without the usual matching callback. After I commented it out, I’ve had zero crashing issues in multiple play tests spanning hours at this point, so I know this is what was causing it.

Whatever you do, please DO NOT copy and use this code. This was very difficult to pinpoint, and I only saw it because I was rewriting some code for the class as a part of something else and spotted it.

//Below commented code could be cause of EXCEPTION_ACCESS_VIOLATION errors I've been getting for years...
// FTimerDelegate TimerDelegate;
// TimerDelegate.BindLambda([&]()
// {
// 	Destroy();
// });
// if (!GetWorldTimerManager().TimerExists(DespawnTimerHandle))
// {
// 	GetWorldTimerManager().SetTimer(DespawnTimerHandle, TimerDelegate, 5.0f, false);
// }

The context is that this code was fired when projectiles overlapped something. I think there’s probably some scenarios where projectiles were forcefully deleted before this delegate could fire, that when it did fire, it would say “hey this projectile no longer exists! What are we suppossed to destroy?” and crash as a result.