[4.18.2] editor crash while testing multiplayer

editor crash trying to join a multiplayer game in PIE with single process (auto-join disabled in editor settings)

Assertion failed: Property->PropertyFlags & CPF_Net [File:D:\Build++UE4+Release-4.18+Compile\Sync\Engine\Source\Runtime\Engine\Private\RepLayout.cpp] [Line: 2975]

0x0000000034EC3FB8 KERNELBASE.dll!UnknownFunction []
0x00000000096576D4 UE4Editor-ApplicationCore.dll!FWindowsErrorOutputDevice::Serialize() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\applicationcore\private\windows\windowserroroutputdevice.cpp:65]
0x00000000FAC6330B UE4Editor-Core.dll!FOutputDevice::Logf__VA() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\private\misc\outputdevice.cpp:70]
0x00000000FABF47F9 UE4Editor-Core.dll!FDebug::AssertFailed() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:414]
0x00000000F8EE0A4E UE4Editor-Engine.dll!FRepLayout::InitFromObjectClass() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\replayout.cpp:2977]
0x00000000F8C29349 UE4Editor-Engine.dll!UNetDriver::GetObjectClassRepLayout() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\networkdriver.cpp:3612]
0x00000000F8C227A5 UE4Editor-Engine.dll!UNetDriver::FindOrCreateRepChangedPropertyTracker() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\networkdriver.cpp:3596]
0x00000000F8140CFD UE4Editor-Engine.dll!AActor::CallPreReplication() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\actor.cpp:956]
0x00000000F8C53CFC UE4Editor-Engine.dll!UNetDriver::ServerReplicateActors_BuildConsiderList() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\networkdriver.cpp:2718]
0x00000000F8C519E6 UE4Editor-Engine.dll!UNetDriver::ServerReplicateActors() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\networkdriver.cpp:3185]
0x00000000F8C5B4F5 UE4Editor-Engine.dll!UNetDriver::TickFlush() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\networkdriver.cpp:369]
0x00000000F8C2065F UE4Editor-Engine.dll!TBaseUObjectMethodDelegateInstance<0,UNetDriver,void __cdecl(float)>::ExecuteIfSafe() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:858]
0x00000000F807CF78 UE4Editor-Engine.dll!TBaseMulticastDelegate<void,float>::Broadcast() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:937]
0x00000000F8AC858D UE4Editor-Engine.dll!UWorld::Tick() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\engine\private\leveltick.cpp:1553]
0x00000000F6CA6BA6 UE4Editor-UnrealEd.dll!UEditorEngine::Tick() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\unrealed\private\editorengine.cpp:1659]
0x00000000F7554AC6 UE4Editor-UnrealEd.dll!UUnrealEdEngine::Tick() [d:\build\++ue4+release-4.18+compile\sync\engine\source\editor\unrealed\private\unrealedengine.cpp:396]
0x000000005AA15A26 UE4Editor.exe!FEngineLoop::Tick() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3296]
0x000000005AA25430 UE4Editor.exe!GuardedMain() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
0x000000005AA254AA UE4Editor.exe!GuardedMainWrapper() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:134]
0x000000005AA32379 UE4Editor.exe!WinMain() [d:\build\++ue4+release-4.18+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:210]
0x000000005AA33D57 UE4Editor.exe!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
0x00000000355F1FE4 KERNEL32.DLL!UnknownFunction []
0x0000000037DDEF91 ntdll.dll!UnknownFunction []
0x0000000037DDEF91 ntdll.dll!UnknownFunction []

RepLayout.cpp [2970]:

	for ( int32 i = 0; i < InObjectClass->ClassReps.Num(); i++ )
	{
		UProperty * Property	= InObjectClass->ClassReps[i].Property;
		const int32 ArrayIdx	= InObjectClass->ClassReps[i].Index;

		check( Property->PropertyFlags & CPF_Net ); // <------ engine crash here

ClassReps array contains 32 elements, but they are nulls from index 21.
Deleting saved and intermediate folders, refreshing nodes on crashing classes, DID NOT solve the issue.

if I edit a single blueprint (set to none a replicated var and set it back to replicated), recompile it and then start game in pie, blueprint doesn’t crash.
if I close unreal and start it again issue is still there.

We can’t recompile each replicated bp whenever we start ue editor :frowning:

This is 3rd blocking bug we faced in last month (child bp crashing upgrading from 4.17 + vr mode slate crash)… this is totally disappointing

it seems to be a well known bug…

https://answers.unrealengine.com/questions/516676/editorcrashwhenmultipie.html
https://answers.unrealengine.com/questions/393022/assertion-failed-parentsiproperty-repindex-parents.html
https://answers.unrealengine.com/questions/397989/blueprint-replication-problems-on-transition-to-41.html
https://answers.unrealengine.com/questions/607913/assertion-failed-property-propertyflags-cpf-net-1.html?sort=oldest

I noticed problem occurs when repnotified var is declared on a child blueprint

Ok managed to solve it… we ported all replicated vars in native c++ classes.
Now we can freely test multiplayer in PIE.

It was a huge work, but now we have a foundation to port progressively all our project.

Someone should advice new users that blueprints are highly unstable.
They’re definitely NOT suited to develop a non trivial project.

Epic this shouldn’t be marked as solved…