In 4.17 preview-3, this crash only happen if building a dev build, the crash does not exist in a shipping build since shipping builds dosen’t do that assert check(…) or something.
I have the project setup for c++ compiling etc, mostly for dedicated server builds, the project has no c++ actors added or anything, its a BP only project. Debugging in VS breaks at the same line (563) inside this function:
Im going to look into reproducing this in a new project, the main project is pretty large so not sure I can isolate the issue without any further debug info from VS, it seems pretty much anything could have failed that assert.
Yes, removing all widgets seems to prevent the crash from happening.
The widgets are just pretty straight forward widgets, some like the HUD use a BP interface, and some have events that are called from other actors in the game and/or vise versa, but nothing special.
I went to line 563 in the BlueprintGeneratedClass.cpp where the error was reported, since i have the source version of the engine and put a breakpoint on it, i was then able to step through all the widgets and if they were false they were the broken ones, I actually just commented out that line and was able to package my game and server and run both. This may be a pretty bad way to fix the issue but at least my game runs now!
Not sure… I had a widget that crashed as soon as it hit a “play animation” node in the graph. The ONLY way to stop the engine from crashing was to create a brand new widget BP and copy/paste everything from inside the old widget, into the new one.
No change I made to the old widget, (deleting / re-adding nodes, refreshing, re-saveing etc), made any difference.
Do you have any good method for finding what widgets are broken? Its a bit of a hit n miss for me right now.
In my case, I found that all the widgets had circular references between themselves and my player controller (the PC created the widget, and then i had button clicked handlers in the widget that got the player controller and cast it to the blueprint type that was creating the widget in the first place). I suspected these were the cause, so I removed the circular references, and it fixed the crash.
I replaced that behaviour with an event driven system, so the widget doesn’t reference the player controller any more, but instead uses and event dispatcher which the PC handles.