Project crash when upgrading from U5.4.3 to U5.5.3

NodeCanvas Forums Support Project crash when upgrading from U5.4.3 to U5.5.3

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #12428
    emmcd333@gmail.com
    Participant

    After moving to 5.5.3 and importing a unitypackage from mentioned prior rev, Unity crashes. I’ve tried all the way up to 5.6x(yeah, I’ve got some time on my hands). I did’t find anything helpful in their Forums. Even deleted Library contents and re-built. Further exploration , I removed all ParadoxNotion et al and no crash.

    I remember some mention of a Project Updater for 2.6? Am I on the right track here. I couldn’t find a search function on this forum although I haven’t been back for a while(been off ‘Unreal’ing myself.

    Cheers,
    Gav

    #12443
    Gavalakis
    Keymaster

    Hello,

    I am sorry for the late reply due to summer vacation!
    Just to clarify, are you trying to update an existing project FROM version 5.3.x or 5.4.x and TO 5.5.x+ , which already has work done with a NodeCanvas version prior to NC v2.6 ?
    Does the Unity console reads any errors before or after (next restart) of the the crash?
    What are the contents of the .unitypackage you are importing?

    Let me know.
    Thank you.

    Join us on Discord: https://discord.gg/97q2Rjh

    #12452
    emmcd333@gmail.com
    Participant

    A summer vacation ? I am outraged! Seriously,I hope you enjoyed yourself thoroughly!

    The Unity crash message was “..fatal error – the memorystream file is corrupt. Remove the file and restart Unity.”

    As regards the crashes, we are okay on this end now as far we know. It took extremely methodical rebuild of the BTs and sub-trees. So, we had to recompose the characters NC component by component. Actually, once it got started it wasn’t that long to overcome it.

    Essentially, it was flawless in 5.4.3. And then all hell broke loose in 5.5.3. It would only occur in the Play mode…immediately when entering Play mode and we discovered that breaking a prefab instance (rebuilding) was safe. If you even activated one of those devils(prefabs), trouble would occur. All prefabs were deleted from the projects. Eventually, we got to the “Project Rebuild” button. Nonetheless, the old prefabs were extremely dangerous.
    Essentially, Unity sent the crash report to their internal GC.

    On another note, been trying to modify FindAllWithTag action. we’re trying to have ‘searchTag’ accept a BB variable. VS warns that it can not convert a BBParameter<string> into a ‘string'(Unity). Does this have to be cast? Something similar occurs in GetOverlapSphereObjects. This one is bit trickier because we’re dealing with the bit shift operator. It can be accomplished and it works fine if use a private variable and supply it with a hard int vale in the action script, but, introducing an external variable for the Layer is not successful. It will bark about converting an int. Attached our version below.

    Attachments:
    You must be logged in to view attached files.
    #12463
    Gavalakis
    Keymaster

    Haha 🙂 Thanks a lot! I hope you had/have a great summer time as well!
    I am glad to hear that you’ve managed to overcome the problem even though it took a bit of manual work. Just to confirm, was I correct to assume that you were using a NodeCanvas version before 2.6.2? Is everything works correctly now after upgrading?

    Regarding changing FindAllWithTag to use a BBParameter, it is possible, but you will also need to change the OnExecute code to use ‘searchTag.value’ instead of simply ‘searchTag’. ‘searchTag.value’ will correctly return the string assigned to the BBParameter. Here is the full changed code for you:

    I think the same can be said for the GetOverlapSphereObjects. When a BBParameter is used, remember to use it’s ‘.value’ property instead of the BBParameter object itself. Here is the code:

    If you want to default the LayerMask parameter to an integer value, you can do this:
    public BBParameter<LayerMask> layerMask = new BBParameter<LayerMask>{ value = -1 };

    Please let me know if that works for you. 🙂
    Thanks!

    Join us on Discord: https://discord.gg/97q2Rjh

    #12477
    emmcd333@gmail.com
    Participant

    Hey,
    we were using an NC earlier than 2.6.2 when on Unity 5.4.3. I believe it was a 2.6.2 and 5.5.3 when trouble began. It seems that the NC Project Update button did not make its’ appearance until after the install or wasn’t readily accessible. Sorry I can’t be more precise but I was here to witness the event. Recovery was a step-by-step rebuild, project save and write of unitypackages. We are fine at this point, but, nagging question is where is the version stamped for NC or FC?

    Thanks for the code advice. FindAllWithTag works exactly we need it – create an accessible variable, assign the value and have the Actions access it as necessary. We’re using it as a means of distinguishing the characters(i.e. the old good guys, bad guys scenario). So, an Instantiation or spawning script would create one or the other and know what tag or layer to identify the opponent.

    Not surprisingly, the greater challenge is GetOverlapSphereObjects. That damn drop-down menu seems inescapable. What we would want is the same variable input to the Action as we can now do with FindAllWithTag. Don’t want to create and maintain several Prefabs for every character group.

    Once again thanks again.

    #12485
    emmcd333@gmail.com
    Participant

    Below is an exception which Can’t be traced back to the “crashes” or any significant changes. Just some fixes to the BTs to match what we had earlier. The Editor pauses a few frames after after Play mode. It can be resumed without trouble as can be seen.

    The exception message :

    MissingMethodException: Method not found: ‘Default constructor not found…ctor() of Pathfinding.TriangleMeshNode’.
    System.Activator.CreateInstance (System.Type type, Boolean nonPublic) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Activator.cs:368)
    ParadoxNotion.Serialization.FullSerializer.fsMetaType.CreateInstance () (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/Reflection/fsMetaType.cs:343)
    Rethrow as InvalidOperationException: Unable to create instance of Pathfinding.TriangleMeshNode; there is no default constructor
    ParadoxNotion.Serialization.FullSerializer.fsMetaType.CreateInstance () (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/Reflection/fsMetaType.cs:348)
    ParadoxNotion.Serialization.FullSerializer.Internal.fsReflectedConverter.TrySerialize (System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& serialized, System.Type storageType) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/Converters/fsReflectedConverter.cs:33)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_4_Converter (System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:671)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_2_Inheritance (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:621)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_1_ProcessCycles (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:602)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.TrySerialize (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:565)
    ParadoxNotion.Serialization.FullSerializer.Internal.fsReflectedConverter.TrySerialize (System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& serialized, System.Type storageType) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/Converters/fsReflectedConverter.cs:51)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_4_Converter (System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:671)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_2_Inheritance (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:621)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_1_ProcessCycles (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:602)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.TrySerialize (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:565)
    ParadoxNotion.Serialization.FullSerializer.Internal.fsReflectedConverter.TrySerialize (System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& serialized, System.Type storageType) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/Converters/fsReflectedConverter.cs:51)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_4_Converter (System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:671)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_2_Inheritance (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:621)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_1_ProcessCycles (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:602)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.TrySerialize (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:565)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.TrySerialize (System.Type storageType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:539)
    ParadoxNotion.Serialization.FullSerializer.Internal.fsDictionaryConverter.TrySerialize (System.Object instance_, ParadoxNotion.Serialization.FullSerializer.fsData& serialized, System.Type storageType) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/Converters/fsDictionaryConverter.cs:82)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_4_Converter (System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:671)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_2_Inheritance (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:621)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_1_ProcessCycles (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:602)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.TrySerialize (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:565)
    ParadoxNotion.Serialization.FullSerializer.Internal.fsReflectedConverter.TrySerialize (System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& serialized, System.Type storageType) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/Converters/fsReflectedConverter.cs:51)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_4_Converter (System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:671)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_2_Inheritance (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:621)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.InternalSerialize_1_ProcessCycles (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:602)
    ParadoxNotion.Serialization.FullSerializer.fsSerializer.TrySerialize (System.Type storageType, System.Type overrideConverterType, System.Object instance, ParadoxNotion.Serialization.FullSerializer.fsData& data) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/Full Serializer/fsSerializer.cs:565)
    ParadoxNotion.Serialization.JSONSerializer.Serialize (System.Type type, System.Object value, Boolean pretyJson, System.Collections.Generic.List`1 objectReferences) (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Serialization/JSONSerializer.cs:55)
    NodeCanvas.Framework.Blackboard.UnityEngine.ISerializationCallbackReceiver.OnBeforeSerialize () (at Assets/ParadoxNotion/NodeCanvas/Framework/Runtime/Variables/Blackboard.cs:37)
    UnityEditor.DockArea:OnGUI()

    #12488
    Gavalakis
    Keymaster

    Hello and thank you for the follow up.
    Support for Unity 5.5+ was added to NC version 2.6.2 and onward. In Unity version 5.5, Unity changed some very important code relevant to serialization, that NC was using, thus existing NodeCanvas based projects in Unity prior to version 5.5 was very difficult to upgrade properly to 5.5 and can only be done with the “Project Updater” tool, which even though the upgrade tool has been thoroughly tested, it might not work in all cases/projects.

    Are the errors you posted above, relevant to the updating, or is it a problem you are still facing in your project?
    Regarding GetOverlapSphereObjects, does not the modified action I posted before works for you? If not, can you please let me know what kind of changes you would like to have and help you with? 🙂

    Thank you!

    Join us on Discord: https://discord.gg/97q2Rjh

    #12507
    emmcd333@gmail.com
    Participant

    Hey Gav,

    I finally received a response from Unity regarding the crashes I mentioned earlier :
    **********************************
    Hey,

    We have been able to reproduce this bug and have sent it for resolution with our developers.

    We highly appreciate your contribution. If you have further questions, feel free to contact us.

    Sincerely,
    Vidmantas
    Unity QA Team
    *************************
    I will update you on the Unity progress/resolution.

    #12511
    Gavalakis
    Keymaster

    Hey,
    Thanks a lot for the follow up and the update! 🙂

    Join us on Discord: https://discord.gg/97q2Rjh

    #12563
    emmcd333@gmail.com
    Participant

    Hey Gav,

    Sort of a thin report from issue tracker but Unity was able to reproduce in several revs. It is in the Active state but I would guess that there won’t be much effort since it was not reproducible in the latest rev of 2017.

    Cheers.
    ____________________________
    Active
    Votes
    0
    Found in
    5.5.3f1
    Issue ID
    942212
    Regression
    Yes
    THE EDITOR CRASHES ON ENTERING PLAY MODE WHEN SOME OF THE PREFABS IN THE SCENE HAVE MISSING COMPONENTS
    Asset and Scene Management-Aug 15, 2017-Priority: 7 Not yet prioritized for a release-Severity: 1 Crash or major loss of functionality
    To reproduce:

    1. Open the project, attached by the user (New Unity re-try wo bts.zip)
    2. Open the “TestScene_Tutorial3Complete” scene
    2. Enter Play mode

    Expected: entering Play mode doesn’t crash Unity if some of the prefabs in the scene have missing missing components

    Reproduced in 5.5.3f1, 5.6.3p3, 2017.1.1p1, 2017.2.0b10, 2017.3.0a1, 2017.3.0a7
    Did not reproduce in 2017.2.0b11
    Could not test for regression in 5.4 due to no support for backwards compatibility

    #12569
    Gavalakis
    Keymaster

    Thanks once again for the update!
    It indeed sounds unfortunate and I also think that they won’t put much effort in fixing this since the bug is not reproducible in 2017.2, but we might be wrong and they do fix it after all.
    Thanks!

    Join us on Discord: https://discord.gg/97q2Rjh

Viewing 11 posts - 1 through 11 (of 11 total)
  • You must be logged in to reply to this topic.