Description

I was able to repro the crash in 4.19. Unable to open sample project in 4.20 or 4.21. Per Licensee:

While porting one of our classes from using UMaterialBillboardComponent to a hand rolled BillboardComponent (to work around UMaterialBillboardComponent Memory Leak and Hitching ) we started seeing crashes if and only if we reused the same variable names for the new UIADBillboardComponents as we were previously using for our UMaterialBillboardComponent.

If our new UIADBillboardComponent is defined using the original variable name "UIADBillboardComponent* ViewmasterBillboardComp;" the game reliable crashes when we first attempt to call a function on this object. If we change the name to anything else, i.e. "UIADBillboardComponent* ViewmasterBillboardComponent;" the crash no longer occurs. This is extremely strange to me!

Either way, the object appears to be created correctly in the UIADBillboardComponent constructor. However when the ViewmasterBillboardComp name is used its value is NULL by the time it's functions are called. To the best of my ability I cannot find any C++ code game-side that could cause this destruction. As far as I can tell, we do not reference the variable names within Blueprint code either.

We haven't been able to understand how this might possible occur. It is as if some stale memory of the original class is stored in Unreal somewhere causing the new version to be corrupted. However we are carefully removing all intermediate files, and fully rebuilding the project before each test. So it's not clear where this 'memory' could exist.

This is [Link Removed] (474mb). The game crashes shortly after running (approx 1 sec).

Steps to Reproduce
  1. Open sample project ( [Link Removed] )
  2. PIE

Result: Crash

Callstack

LoginId:77ac66cf4b506a51a458c382c4ec63c2
EpicAccountId:5caf2c99925243e8b9b1bdcc9cd0e6cf

Access violation - code c0000005 (first/second chance not available)

UE4Editor_IAD!UIADBillboardComponent::SetMaterial() [c:\users\jon.bland\desktop\udn_438867\iad\source\iad\private\iadbillboardcomponent.cpp:82]
UE4Editor_IAD!APlayerBase::SetupBillboards() [c:\users\jon.bland\desktop\udn_438867\iad\source\iad\private\playerbase.cpp:91]
UE4Editor_IAD!APlayerBase::Tick() [c:\users\jon.bland\desktop\udn_438867\iad\source\iad\private\playerbase.cpp:458]
UE4Editor_Engine!AActor::TickActor() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\actor.cpp:870]
UE4Editor_Engine!FActorTickFunction::ExecuteTick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\actor.cpp:134]
UE4Editor_Engine!FTickFunctionTask::DoTask() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\ticktaskmanager.cpp:273]
UE4Editor_Engine!TGraphTask<FTickFunctionTask>::ExecuteTask() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\async\taskgraphinterfaces.h:829]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:665]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:574]
UE4Editor_Core!FTaskGraphImplementation::WaitUntilTasksComplete() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async\taskgraph.cpp:1355]
UE4Editor_Engine!FTickTaskSequencer::ReleaseTickGroup() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\ticktaskmanager.cpp:542]
UE4Editor_Engine!FTickTaskManager::RunTickGroup() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\ticktaskmanager.cpp:1449]
UE4Editor_Engine!UWorld::RunTickGroup() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:770]
UE4Editor_Engine!UWorld::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:1429]
UE4Editor_UnrealEd!UEditorEngine::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\editorengine.cpp:1693]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\unrealedengine.cpp:401]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3339]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:144]
UE4Editor!WinMain() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:223]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
kernel32
ntdll

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-60510 in the post.

1
Login to Vote

Won't Fix
ComponentUE - Gameplay - Components
Affects Versions4.19.2
Target Fix4.21
CreatedJun 14, 2018
ResolvedJun 21, 2018
UpdatedJun 23, 2018