Create child of BP_Parent. Let’s call it BP_Parent_Child.
Create BP_OtherActor (Actor).
Open BP_OtherActor and create Child Actor Component. Set it to BP_Parent_Child.
Open BP_Parent and create new variable - a reference to BP_OtherActor.
Save everything, exit UE4, reopen it and try to open BP_Parent or other BPs.
Crash.
So I guess I created an infinite loop this way? I’m referencing actor with Child Actor inheriting from BP I placed the first reference in. But on the other hand - it all worked until I reopened UE4. So maybe it is a bug after all? If you have any questions just let me know.
Original post:
Title: Opening my BPs crashes the editor
Hello,
I currently work on BPs with inheritance (cabinet class, drawer class, etc.) and after all day of work, when everything seemed fine and worked as intended, I reopened the editor to make one last change and found out the editor crashes every time I try to open one of my BPs. It includes opening a level with these BPs on it, opening Maps & Modes menu or Play in the Editor (two latter probably due to Player Character BP crashing as well). I see a lot of people had similar issues in the past, but I don’t see a solution to this problem other than making all changes once again…
That being said, I would love to be able to retrieve these BPs, not making them once again. I don’t want to put the project in the public space, but I can send it in a private message if needed.
So as far as I understand you’re able to open the project as usual.
Have you tried to migrate the specific BP’s into a new blank project?
Maybe you can open them there to solve the issues, on the other hand if it still crashes, you can upload THIS project (way smaller than you actual project I guess) for anyone
I had a similar problem in earlier versions because of a loop inside a characterBP, couldn’t do much besides waiting for a new version Hope you can solve it, it’s a pain.
greetings
Do you have a error log or anything more specific, is it a Null pointer error, did you write everything in c or did you only use engine BPs?
I don’t think a 100% repo will help, because it takes ages to debug a whole project, only to see that you did call a reference you never declared, so an output log would help a lot
Only Blueprints, no code. I found a 100% sure reproduction of the issue today:
Create new empty project.
Create BP_Parent (Actor).
Create child of BP_Parent. Let’s call it BP_Parent_Child.
Create BP_OtherActor (Actor).
Open BP_OtherActor and create Child Actor Component. Set it to BP_Parent_Child.
Open BP_Parent and create a new variable - a reference to BP_OtherActor.
Save everything, exit UE4, reopen it and try to open BP_Parent or other BPs.
Crash.
So I guess I created an infinite loop this way? I’m referencing actor with Child Actor inheriting from BP I placed the first reference in. But on the other hand - it all worked until I reopened UE4. So maybe it is a bug after all? If you have any questions just let me know.
I had the same problem.
I spent several hours to finding the cause of crash.
But I don’t guessed to find cause in ‘cyclic’ references.
After reading this post I removed the ‘cyclic’ reference. After that I have no any crashes at opening blueprints.
Dear Epic, can we get a confirmation that you are aware of the crashes this issue causes? It would be great, if possible, to secure BP editor to detect dangerous references. Any warning would be better than losing hours of work. Thanks in advance!
Dear Epic, can we get a confirmation that you are aware of the crashes this issue causes? It would be great, if possible, to secure BP editor to detect dangerous references. Any warning would be better than losing hours of work. Thanks in advance!
I can confirm that this would cause a crash, but it’s an expected one if that is your hierarchy. What you end up with after following the steps in the original post is BP_Parent_Child and BP_OtherActor having a circular reference issue. The variable that you create in BP_Parent that references BP_OtherActor causes this issue. Since BP_Parent_Child inherits everything from its parent, this causes it to have a reference to BP_OtherActor as well, which has a reference to BP_Parent_Child, which has a reference to BP_OtherActor and so on.
What kind of crash message are you getting when this occurs? I noticed that it hasn’t been mentioned and there could be something in that callstack worth looking out for that could make this more obvious.
Thank you for your answer. The funny part about this crash is that it appears after reopening the project and opening the BP with circular reference (or any level or asset using it, I guess). Before exiting the editor after creating this circular reference everything works fine and there’s no sign at all that we created something that will destroy our work after exiting UE4. It would be great to have some kind of warning after creating such reference or some way to repair BP with it. Other way it’s just a trap some may fall into without even realizing why. I attach files created by Crash Reporter here. Let me know if you need anything else.
I appreciate the information but all I need is the callstack that appears in Crash Reporter when the crash occurs. Unfortunately that isn’t included in this log file and the minidump files from UE4 aren’t useful without the project, as the crash context is not included. Could you please copy/paste the callstack from the Crash reporter window into a text file and upload that? It looks like this:
I’ve placed a feature request in, although I don’t believe this is something that we would be able to catch without adding invasive checks that would inhibit performance. I’ll leave that up to the developers however. You can find the feature request and track it here: UE-40811.
As for why the issue doesn’t happen until the project is reopened; This is due to the crash coming from the engine trying to load all references when loading an asset for the first time. Since, when you are setting up this reproduction, all of these blueprints are already loaded, it doesn’t have to load anything else. As soon as you ask it to load one when opening the project up again however, it tries to find all of the references and goes in a circle until it eventually times out.
Also, the reason you got that message “You do not have any debugging symbols required to display the callstack for this crash.” is because you don’t have the Editor Symbols for Debugging enabled in your installation. That can be found in the Epic Games Launcher’s Library tab by clicking the arrow beside launch on the individual installation and selecting “Options”. It’s quite sizable but it will let you see your own callstacks. Either way, (for future knowledge) if you submit the crash and provide us with either the MachineId or EpicAccountId, we can look it up internally.