Hi,
We’re currently on 4.6 with some fixes from 4.7/4.8 integrated. This crash has been happening at seemingly random moments and without a clear repro case. Some reports state that it happened when the user was pressing Undo, others when placing a mesh in the scene.
The output in the log-file with the stacktrace looks like this:
[2015.08.05-13.59.11:075][850]LogEditorTransaction: Undo Move Actors
[2015.08.05-13.59.11:114][850]LogVillainNavCache: Villain cache invalidated
[2015.08.05-13.59.11:166][850]LogCrashTracker:
<snip>
[2015.08.05-13.59.37:355][850]LogWindows: === Critical error: ===
Fatal error!
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION 0x5380ec00
UnknownModule!UnknownFunction (0x000000355380ec00) + 0 bytes [UnknownFile:0]
UE4Editor-SceneOutliner.dll!SceneOutliner::SSceneOutliner::GetParentsExpansionState() (0x00007ffe1f48f368) + 162 bytes [d:\tc\757805abc141f763\yankee\engine\source\editor\sceneoutliner\private\ssceneoutliner.cpp:1167]
UE4Editor-SceneOutliner.dll!SceneOutliner::SSceneOutliner::Populate() (0x00007ffe1f4b711f) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\editor\sceneoutliner\private\ssceneoutliner.cpp:721]
UE4Editor-SceneOutliner.dll!SceneOutliner::SSceneOutliner::Tick() (0x00007ffe1f4cba18) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\editor\sceneoutliner\private\ssceneoutliner.cpp:3107]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ece83) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:334]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-SlateCore.dll!SWidget::TickWidgetsRecursively() (0x00007ffe339ecf62) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slatecore\private\widgets\swidget.cpp:338]
UE4Editor-Slate.dll!FSlateApplication::TickWindowAndChildren() (0x00007ffe33c91532) + 72 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:893]
UE4Editor-Slate.dll!FSlateApplication::TickWindowAndChildren() (0x00007ffe33c91655) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:898]
UE4Editor-Slate.dll!FSlateApplication::Tick() (0x00007ffe33c90dad) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:1297]
UE4Editor.exe!FEngineLoop::Tick() (0x00007ff7130c10c1) + 15 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\launch\private\launchengineloop.cpp:3025]
UE4Editor.exe!GuardedMain() (0x00007ff7130b42cc) + 0 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\launch\private\launch.cpp:154]
UE4Editor.exe!GuardedMainWrapper() (0x00007ff7130b433a) + 5 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor.exe!WinMain() (0x00007ff7130c291a) + 17 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\launch\private\windows\launchwindows.cpp:214]
UE4Editor.exe!__tmainCRTStartup() (0x00007ff7130c3a49) + 21 bytes [f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c:618]
KERNEL32.DLL!UnknownFunction (0x00007ffe5f5613d2) + 0 bytes [UnknownFile:0]
ntdll.dll!UnknownFunction (0x00007ffe60905444) + 0 bytes [UnknownFile:0]
ntdll.dll!UnknownFunction (0x00007ffe60905444) + 0 bytes [UnknownFile:0]
The other crash logs look slightly different:
[2015.08.06-11.19.22:512][234]LogWindows: === Critical error: ===
Fatal error!
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffff
UE4Editor-UnrealEd.dll!SharedPointerInternals::DestroyObject<SAssetThumbnail>() (0x00007fffa52c682d) + 13 bytes [d:\tc\757805abc141f763\yankee\engine\source\runtime\core\public\templates\sharedpointerinternals.h:283]
UE4Editor-SceneOutliner.dll!SceneOutliner::SSceneOutliner::GetParentsExpansionState() (0x00007fff9367f368) + 162 bytes [d:\tc\757805abc141f763\yankee\engine\source\editor\sceneoutliner\private\ssceneoutliner.cpp:1167]
and:
[2015.07.31-15.53.03:252][574]LogWindows: === Critical error: ===
Fatal error!
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffff
UE4Editor-SceneOutliner.dll!SceneOutliner::SSceneOutliner::GetParentsExpansionState() (0x00007ff84f0df1c5) + 159 bytes [d:\tc\757805abc141f763\yankee\engine\source\editor\sceneoutliner\private\ssceneoutliner.cpp:1167]
All of them revolve around the SSceneOutliner.cpp file in the SSceneOutliner::GetParentsExpansionState function.
The exact line is:
if (Item.Key.IsValid() && !OutlinerTreeView->IsItemExpanded(Item.Value))
Note, the Item.Key.IsValid() was moved to the front here in a previous attempt to fix it, but it seems to me that the Key.Value here is the problem.
In one of the log-files the last line is at sharedpointerinternals.h:283, which matches SharedPointerInternals::DestroyObject call. Should this code have additional checks to safeguard the usage of the TSharedRef ? The documentation states “TSharedRef is a non-nullable, non-intrusive reference-counted authoritative object reference.” Could it be that it’s not thread safe? Or is the issue something completely different here?