[4.7.1 Crash] Object 'UserConstructionScript' isn't imported, because its outer is a placeholder

When attempting to use or edit blueprint A, which references blueprint B, the debugger outputs “Object ‘UserConstructionScript’ isn’t imported, because its outer is a placeholder” and then crashes (c++ check/assert) in ULinkerLoad::CreateExport:

UObject* Template = GetArchetypeFromRequiredInfo(LoadClass, ThisParent, Export.ObjectName, Export.ObjectFlags);
check(Template);

Note: If I first load blueprint B in the blueprint editor, then blueprint A can be used normally.

Thanks in advance

Hey Grogger-

How exactly is Blueprint A referencing Blueprint B? Is one blueprint the parent/child of the other? Does Blueprint A have a variable that is of Blueprint B’s type? Do you get the same crash in a new fresh project? If so can you also include the call stack from the crash as well as the log files inside the project’s Saved->Logs folder from when the crash occurred?

Cheers

Blueprint A’s parent BP has a variable for the class of Blueprint B (bp A is a spawner/factory for the other). The Blueprint B class is set as the default for this variable.

I haven’t been able to reproduce this in a fresh project. Additionally, I have this very same relationship for another set of classes that doesn’t have this same problem (using the same parent ‘spawner’ class).

I’ve attached the crash dump, data, logs, and callstack - please let me know what else I can provide to help :slight_smile:

Does Blueprint B have the same parent as A? Also, is there any reference in the event graph or functions of either Blueprint A or its parent to the variable mentioned earlier? If you change the variable to reference a different default do you get the error? What about if you change the variable to reference a different class entirely?

Hi , sorry for the delay:

  • They do not share a parent
  • The parent class uses the variable mentioned in the construction script, verifies if it is a non-null class, and then spawns it
  • It still crashes when I change that variable to something else, but it seems that the reference to Blueprint B still exists (this helped me discover a ‘cast’ node to Blueprint B Actor)

Deleting the cast node stops it from crashing, even if the variable is set to class Blueprint B. I hope this discovery helps!

EDIT: I wanted to mention that placing the Cast back will crash again, and that class B does not know about class A or it’s parent (I believe this rules out cyclic references)

Hey Grogger-

It sounds as though the cast node was creating an erroneous reference to Blueprint B. If you could post a screenshot of your blueprint (including the cast node causing the crash) I will make a report for the crash. For now since you have a workaround, I will be marking this as resolved for tracking purposes as we work to fix the crash itself.

Cheers