2013-06-16 14 views
9

Weiß jemand, was das verursachen würde? Ich kann nichts zu meiner Klasse speichern, weil ich eine Debug-Ausnahme ausgelöst bekommen: Sammlung ist leerSmalltalk - Sammlung ist leer Fehler beim Speichern

enter image description here


Link zur Quelle: https://dl.dropboxusercontent.com/u/1817765/Pharo%20Crash%20Files.rar

Schritte zum neu erstellen:

  • Launch Pharo 1.1
  • Wählen Sie die Datei .image, ohne die .changes-Datei im selben Verzeichnis
  • Versuch NumberWithUnits>>=
    • Absturz
  • Versuch wählen fast etwas NumberWithUnits
    • Absturz
  • zu sparen
+1

Aus dem Bild öffnen kann, sieht es wie ein Quietschen 4.x Geschmack.Welche Version genau? Es sieht wie ein Bug aus, also musst du den Stack wahrscheinlich löschen und in die squeak-dev-Mailingliste schreiben (oder ein Mantis-Problem öffnen). –

+1

Schöner Bug finden !! –

Antwort

5

Squeak/Pharo haben eine spezielle Behandlung bei fehlendem Quellcode: sie versuchen CompiledMethod aus dem entsprechenden MethodDictionary zu dekompilieren.

Was Sie hier gesehen haben, ist ein Fehler von Decompiler, einige Methoden ordnungsgemäß zu dekompilieren.

Ohne Code ist der IDE nicht funktionsfähig, und Sie sind fest (Sie nicht, Ihren Code speichern, durchsuchen Sie Ihren Code, Debug-Code ...)

Diese Pharo Version 1.1 sehr alt sind und Sie Ich werde keine Unterstützung bekommen.

Aber interessant, die Fehler von Decompiler, die Sie immer noch vorhanden angetroffen werden, sind auf dem gegenwärtigen Squeak Stamm Entwicklung (4.5)
Und die Methode, die die Decompiler loosy macht, ist:

< aNumberWithUnits 
    (self compareUnits: aNumberWithUnits) 
     ifTrue: [self value: ((aNumberWithUnits value) < (self value) ifTrue: [^true] ifFalse: [^false]).] 
     ifFalse: [^Error new signal: 'Incompatible unit types.']. 

Dies ist ein eher unkonventioneller Code seit die Nachricht [self value: ...] wird nie gesendet werden.
Der Grund ist, dass der Parameter zuerst ausgewertet wird und beide Zweige der Bedingung ifTrue: [^true] ifFalse: [^false] zurückgeben.

Da Sie eine dunkle Ecke erkundet haben, die nur Neulinge erkunden, und die wir nicht testen konnten, würde ich nur Danke sagen.

Wenn Sie es Lust haben, können Sie einen Bericht über http://bugs.squeak.org

+1

Ich habe es gemeldet: http://bugs.squeak.org/view.php?id=7771 –

6

Das Problem war, dass ich nicht die richtige .changes Datei mit meinem Projekt verknüpft hatte. Da mein Teamkollege und ich zusammenarbeiteten, waren diese in der Übersetzung verloren. Sobald ich die korrekten .changes Dateien in das Verzeichnis meiner .image Datei platziert habe, hat alles geklappt.

+0

Gut, aber der Decompiler wird verwendet, um den Quellcode in diesem Fall zu rekonstruieren, und es gibt ein zweites Problem: Es ist fehlgeschlagen. Könnten Sie den Quellcode teilen, der das Fehlschlagen verursacht hat? –

+0

Hinzugefügt einen Download-Link mit Erholung Schritte zur ursprünglichen Frage – MrDuk

+1

Ah danke, diese Version von Pharo ist alt, und die Untersuchung dieser kleinen Decompiler-Problem wäre nur verschwendete Zeit zu wissen, dass viele Dinge gerade in Entwicklung Zweig (3.0) gerade passiert Compiler, Decompiler und manchmal bald Quellcode-Speicher. Ich werde versuchen, Squeak zu überprüfen. –

Verwandte Themen