I have looked around and I see no reported cases of this particular error, and I cannot seem to find any way of fixing it. Its guaranteed to happen everytime I run in standalone game (launching from the play menu in the editor) but it does not happen immediately.
The world is comprised of a World Composition based world, and the error occurs when loading in a cell, it can be any cell, and it can be any object that causes the crash, there is no pattern. The issue also does not occur when running in editor, and occurs less frequently when a debugger is attached.
Below is the callstack at the moment of the crash:
[2015.02.24-12.03.51:207][140]LogWindows: === Critical error: ===
Fatal error!
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffff
UE4Editor-CoreUObject.dll!UObjectPropertyBase::CheckValidObject() (0x00007ffba9143393) + 17 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\uobject\propertybaseobject.cpp:386]
UE4Editor-CoreUObject.dll!UObjectProperty::SerializeItem() (0x00007ffba91dbeee) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\uobject\propertyobject.cpp:28]
UE4Editor-CoreUObject.dll!FPropertyTag::SerializeTaggedProperty() (0x00007ffba910dc2a) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\public\uobject\propertytag.h:129]
UE4Editor-CoreUObject.dll!UStruct::SerializeTaggedProperties() (0x00007ffba910d5b2) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\uobject\class.cpp:1167]
UE4Editor-CoreUObject.dll!UObject::SerializeScriptProperties() (0x00007ffba917e65c) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\uobject\obj.cpp:887]
UE4Editor-CoreUObject.dll!UObject::Serialize() (0x00007ffba917c616) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\uobject\obj.cpp:829]
UE4Editor-Engine.dll!USceneComponent::Serialize() (0x00007ffba2368fc6) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\engine\private\scenecomponent.cpp:1015]
UE4Editor-Engine.dll!UPrimitiveComponent::Serialize() (0x00007ffba230c1c5) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\engine\private\primitivecomponent.cpp:443]
UE4Editor-CoreUObject.dll!ULinkerLoad::Preload() (0x00007ffba916ea92) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\uobject\linkerload.cpp:2769]
UE4Editor-CoreUObject.dll!FAsyncPackage::CreateExports() (0x00007ffba90c078d) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:690]
UE4Editor-CoreUObject.dll!FAsyncPackage::Tick() (0x00007ffba9112ca2) + 8 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:279]
UE4Editor-CoreUObject.dll!ProcessAsyncLoading() (0x00007ffba90f52ee) + 24 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:1034]
UE4Editor-CoreUObject.dll!StaticTick() (0x00007ffba91e2660) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:329]
UE4Editor-Engine.dll!UGameEngine::Tick() (0x00007ffba207fc10) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\engine\private\gameengine.cpp:800]
UE4Editor.exe!FEngineLoop::Tick() (0x00007ff6a1bcb564) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\launch\private\launchengineloop.cpp:2214]
UE4Editor.exe!GuardedMain() (0x00007ff6a1bbf9de) + 0 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\launch\private\launch.cpp:131]
UE4Editor.exe!GuardedMainWrapper() (0x00007ff6a1bbfa4a) + 5 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor.exe!WinMain() (0x00007ff6a1bccbb9) + 17 bytes [d:\toolkits\unrealengine\testgame\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor.exe!__tmainCRTStartup() (0x00007ff6a1bcdb79) + 21 bytes [f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c:618]
KERNEL32.DLL!UnknownFunction (0x00007ffbc3ff16ad) + 0 bytes [UnknownFile:0]
ntdll.dll!UnknownFunction (0x00007ffbc67c4409) + 0 bytes [UnknownFile:0]
ntdll.dll!UnknownFunction (0x00007ffbc67c4409) + 0 bytes [UnknownFile:0]
In the PropertyBaseObject::CheckValidObject function, Object is not null, but nor is it a valid reference, so when it obtains the class for that object, this class is also invalid and so it crashes trying to access any variables on this class. It looks like the object has been garbage collected at some point, but not removed, but again there appears to be no pattern to why this occurs.
The object in particular is a custom static mesh asset. I cannot provide a repro of this issue, as im not sure why it happens, or how much work it would take to actually create a repro, my world is fairly large and has thousands of objects in it, which may be part of the cause.
Prior to 4.6.1 I have had no issues, when porting to 4.6.1 I changed none of the code (except for the deprecated stuff). So its nothing I have added to the code since.
I noticed that in 4.7.8 preview, there has been a lot of code added around these functions for circular dependencies and other stuff, what I am wondering is, does this code touch on the above issue? and if so, can someone send me the git commit for those fixes in particular, I am not ready to upgrade to 4.7.8 preview at this time due to the changes in rendering (requires a lot of work on my behalf to do so, even just to test). So that I can apply the changes retro actively.