Jump to content
Unity Insider Forum

Editor Crash bei allen Editor Script Imports - Jeder Tipp kann helfen!


HenriChinasky

Recommended Posts

Hallo Leute,

ich weiß wirklich nicht mehr weiter. Ich hatte bereits vor einiger Zeit genau dasselbe Problem mit einer älteren Unity Version:
https://forum.unity.com/threads/unity-editor-crashes-when-compiling-certain-imported-scripts-need-help-desperately.468946/

Das Problem lag darin, dass der Unity Editor immer gecrasht ist, wenn ich versucht habe irgendein Script aus einem Editor Folder in mein Projekt zu importieren. Wenn ich das Script dann nicht vor dem nächsten Start wieder gelöscht habe, öffnete sich Unity überhaupt nicht mehr und ich musste die komplette Library neu erstellen lassen.
Nach ewigem rumprobieren hatte ich damals eine .dll Datei im Projekt gefunden die versehentlich doppelt drin gewesen ist, diese gelöscht und das Problem verschwand.

Nun ist es in der aktuellen Unity Version zurückgekehrt und seltsamer denn je! Erst einmal dachte ich, es würde sich um exakt dieselbe Problematik handeln, aber ich fand keine doppelte .dll. Ich habe wirklich tagelang nichts getan außer rumzutesten, war schon völlig verzweifelt und habe schließlich angefangen Assets zu löschen, die ich nicht akut gebraucht habe und im Anschluss immer versucht ein Editor Script zu importieren. Schließlich habe ich ein Asset gelöscht, was es mir tatsächlich ermöglicht hat das Script zu importieren. Seltsamerweise trat der Crash beim nächsten Script aber erneut auf! Ich habe wieder ein Asset gelöscht und siehe da: Ich konnte erneut ein weiteres Editor Script hinzufügen. Danach hat auch das wahllose löschen von Assets zu keinem Erfolg mehr geführt.

Noch verzweifelter als zuvor ist mir im Crash-Log aufgefallen, dass Fraps mit einer .dll vertreten gewesen ist. Ich dachte in meiner Verzweiflung, dass vielleicht hier irgendeine Inkompatibilität besteht die mir nie in den Sinn gekommen wäre, habe Fraps geschlossen und unglaublicherweise wurde das Script ordnungsgemäß und ohne Crash importiert. Ich glaubte endlich das Problem identifiziert zu haben und dummerweise war ich so übermütig, dass ich sofort eines der vorher gelöschten Assets wieder eingefügt habe - was zu einem Crash geführt hat. 

Ich weiß nicht was ich tun soll. Mir ist klar, dass die beste Lösung wäre ein neues Projekt zu erstellen und alle Assets und Scripts nach und nach zu importieren um das Problem auszumachen, aber aufgrund der Komplexität des Projekts und der vielen Querverweise innerhalb der Scripts würde das unglaublich viel Zeit und kleinteilige Arbeit in Anspruch nehmen, ohne Garantie, dass am Ende dann nicht wieder alles crasht. Deshalb meine Frage:

Hat irgendwer schon etwas ähnliches erlebt?
Gibt es irgendeine Funktion oder auch ein Asset was es mir ermöglicht nachzuvollziehen wodurch der Crash zustande kommt?

Ich weiß, dass es schwer ist darauf eine hilfreiche Antwort zu geben, aber mir bleibt kaum etwas anderes übrig als darauf zu hoffen, dass jemand eine ähnliche Erfahrung gemacht hat.
Jeder Tipp könnte hilfreich sein!

Der Fehler im Log lautet nichtssagend:
mono.dll caused an Access Violation (0xc0000005)
  in module mono.dll at 0033:ae68e36c.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Abgesehen von Unity selber und Assets die sich in einem Projekt befinden ...oder eine Systemfehler auf deinem PC (defekte Festplatte, defekter Ram)

Ich hatte schon einmal ähnliche Probleme mit Virenscannern (auf meinem System sind mindestens 2 aktiv, der von Windows und ein selbst installierter) und andere Software (AdwareScanner usw.) die im Hintergrund Dateien scannen. Man sollte für Unity Ausnahmeregeln erstellen und Projektverzeichnisse und Unity selbst aus diesen Scannern herausnehmen. Es kann ansonsten passieren, daß der Scanner entweder eine Datei des Unityprojektes blockiert oder eine Datei von Unity (DLL), was schlimmstenfalls zu einem Unitycrash führen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke fürs Lesen und für die Tipps.

Dass es an der Festplatte oder an der Unity Installation liegt kann ich ausschließen, da bei beidem die Gegenprobe gemacht. Das mit Hintergrundprogrammen ist eine gute Idee, leider in meinem Fall nicht die Ursache. Ich nutze sehr viele unterschiedliche Script Assets und vermute, dass irgendeines davon der Übeltäter ist.

Hat irgendwer eine Ahnung ob man mit dem Editor Log etwas anfangen kann? Da heißt es in etwa:

Reloading assemblies after script compilation.
Begin MonoManager ReloadAssembly

Platform assembly: C:\Unity2017\Editor\Data\Managed\UnityEngine.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Managed\UnityEditor.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Managed\Unity.Locator.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Mono\lib\mono\2.0\I18N.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Mono\lib\mono\2.0\I18N.West.dll (this message is harmless)

//usw... Dann zufälligerweise (?) das Asset was ich gerade neu hinzugefügt habe

Non platform assembly: D:\PFAD\Assets\Cinema Suite\Cinema Director\System\Editor\DirectorControl\DirectorEditor.dll (this message is harmless)
Loading D:\PFAD\Assets\Cinema Suite\Cinema Director\System\Editor\DirectorControl\DirectorEditor.dll into Unity Child Domain
Platform assembly: C:\Unity2017\Editor\Data\Mono\lib\mono\2.0\System.Core.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Managed\ExCSS.Unity.dll (this message is harmless)

//und direkt danach

TypeLoadException: Could not load type 'AC.Action' from assembly 'Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
(Filename:  Line: -1)
TypeLoadException: Could not load type 'AC.Action' from assembly 'Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
(Filename:  Line: -1)
TypeLoadException: Could not load type 'AC.Action' from assembly 'Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
(Filename:  Line: -1)

//darauf folgen mindestens hunderte TypeLoadExceptions von allen möglichen Scripts (Auch aus dem UnityEngine Namespace) und schließlich:

TypeLoadException: Could not load type 'vEnumFlagAttribute' from assembly 'Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
(Filename:  Line: -1)

Assertion failed on expression: 'm_ArrayField != SCRIPTING_NULL'
(Filename: C:\buildslave\unity\build\Runtime/Mono/SerializationBackend_DirectMemoryAccess/LinearCollectionField.cpp Line: 33)

Crash!!!

Kann jemand daraus irgendetwas ableiten? Liege ich eurer Ansicht nach richtig in der Annahme, dass der Fehler der den Crash verursacht als:

Assertion failed on expression: 'm_ArrayField != SCRIPTING_NULL'
(Filename: C:\buildslave\unity\build\Runtime/Mono/SerializationBackend_DirectMemoryAccess/LinearCollectionField.cpp Line: 33)

beschrieben wird?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja und klingt nach einem internen Unitycrash einer C++-Klasse. Diese Klasse scheint irgendwas mit der Serialisierung zu tun zu haben.
Durchsuche mal deine Assets und alle C#-Klassen oder JS-Klassen nach:

m_ArrayField != SCRIPTING_NULL

Wie es scheint crashed Unity aufgrund dieser Zuweisung oder zumindest im Umfeld dieser Zuweisung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

"Assembly-C-Sharp" ist die Assembly, in die dein ganzer eigener Code geladen wird, also kein Unity stuff wenn ich mich recht erinnere.

Unity hat also irgend ein Problem damit, was von deinem Code zu laden. Das könnte beispielsweise durch Zugriff auf korrupten Speicher (Access Violaation) passieren. Sprich: irgendeine deiner Dateien ist eventuell beschädigt oder ähnliches.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 21 Minuten schrieb Life Is Good:

"Assembly-C-Sharp" ist die Assembly, in die dein ganzer eigener Code geladen wird, also kein Unity stuff wenn ich mich recht erinnere.

Unity hat also irgend ein Problem damit, was von deinem Code zu laden. Das könnte beispielsweise durch Zugriff auf korrupten Speicher (Access Violaation) passieren. Sprich: irgendeine deiner Dateien ist eventuell beschädigt oder ähnliches.

Jap, du hast wohl leider Recht... Was mich nur so verwundert ist, dass es nach dem Löschen eines Assets geklappt hatte ein Editor Script zu importieren oder nachdem ich Fraps geschlossen hatte einmal. Schon sehr seltsam der ganze Fehler. Also ich weiß wirklich nicht was ich noch machen soll...

Das einzige was mir noch einfällt um das Problem einzugrenzen ist zu Posten was konkret  im Editor Log zwischen den TypeLoadExceptions und dem Crash steht:

Refreshing native plugins compatible for Editor in 3.64 ms, found 7 plugins.
Preloading 2 native plugins for Editor in 0.28 ms.
Platform assembly: C:\Unity2017\Editor\Data\Managed\Mono.Cecil.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Managed\Unity.SerializationLogic.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Managed\Unity.DataContract.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Mono\lib\mono\2.0\UnityScript.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Managed\Unity.Legacy.NRefactory.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Mono\lib\mono\2.0\System.Xml.Linq.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Managed\Unity.IvyParser.dll (this message is harmless)
Platform assembly: C:\Unity2017\Editor\Data\Mono\lib\mono\2.0\Boo.Lang.dll (this message is harmless)
Non platform assembly: C:\Unity2017\Editor\Data\UnityExtensions\Unity\UnityVR\Editor\UnityEditor.iOS.Extensions.Xcode.dll (this message is harmless)
Non platform assembly: C:\Program Files (x86)\Microsoft Visual Studio Tools for Unity\15.0\Editor\SyntaxTree.VisualStudio.Unity.Messaging.dll (this message is harmless)
Assertion failed on expression: 'm_ArrayField != SCRIPTING_NULL'
 
(Filename: C:\buildslave\unity\build\Runtime/Mono/SerializationBackend_DirectMemoryAccess/LinearCollectionField.cpp Line: 33)

Crash!!!

Könnte man daraus nicht schließen, dass es sich vllt um eine .dll Datei handelt, so wie letztes mal? Dann wär die Suche ja zumindest extrem eingegrenzt. 

"Refreshing native plugins compatible for Editor" würde auch erklären warum nur Editor Scripts betroffen sind, weil bei denen die .dlls neu geladen werden?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay, vielen dank für eure Hilfe. Ich habe das Asset DevTools was sowieso deprecated ist gelöscht. Darin war eine .dll mit der Änderungen an dem Editor vorgenommen worden waren. Irgendwie ist der Ordner von meinem alten in mein neues Projekt gerutscht. Ich traue mich noch nicht weitere Assets zu importieren aber da das Asset Unity 2017 sicherlich nicht unterstützt könnte ich mir sehr gut vorstellen, dass es daran gelegen hat.

Vielen Dank nochmal, das Schreiben mit euch hat mich jedenfalls vorerst zur richtigen Lösung geführt! 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...