2009-08-12 18 views
2

Ich bekomme einige wirklich seltsame Fehler in XCode. Jedes Mal, wenn ich mein Programm laufen, erhalte ich:Seltsame XCode/Objective-C Fehler: Integritätsprüfung fehlgeschlagen

malloc: test_node_integrity: FreeListNode 0x1052af0 { _prev = 0xffffffff, _next = 0xffffffff, _size = 0 } failed integrity check.

Ich habe alle über Google gesucht, aber nicht jemand anderes mit dieser Fehlermeldung gefunden. Der Stack-Trace hat Methoden, die nicht in meinem Programm sind - es ist ein anderer Thread, den XCode ausführt. Kann ich da noch mehr Informationen dazu bekommen? Ich habe bereits versucht, XCode (10.5.8, XCode 3.1) zu deinstallieren/neu zu installieren.

Ich verwende Garbage Collection, also frage ich mich, ob dort ein Fehler ist. Ich habe einen anderen Fehler bekommen, "missing cpu_capibilites.h,", der auf eine String-Formatierungsmethode zeigen würde. Der Fehler hat sich in einen Zustand geändert, in dem der Debugger den Status nicht zurücksetzen konnte, und jetzt habe ich diesen Fehler.

Wenn es andere Fehlerinformationen gibt, die ich hätte posten sollen, lass es mich wissen.

Antwort

2

Was passiert ist, dass etwas in Ihrem Programm oder einem Framework, das es verwendet, in ungenutzten Speicher (der Garbage Collection-Heap) schreibt und interne Datenstrukturen im unbenutzten Speicher zerstört. Das nächste Mal, wenn etwas AutoZone (den GC-Speicherzuordner) anfordert, Speicher zuzuweisen, versucht es, die Strukturen im nicht zugeordneten Speicher zu lesen, findet sie als ungültig und löst die obige Nachricht aus.

Sie können die Quelle lesen, die http://www.opensource.apple.com/source/autozone/autozone-77.1/AutoAdmin.cpp?f=text

Also auf diese Weise ist, was Sie für Speicher smashers zu suchen.

+0

Wenn Sie GC verwenden, ist das Problem nicht unbedingt Speicherzertrümmerer, zumindest nicht in der traditionellen "Verwendung nach' free() '" manuelle Speicherverwaltung Sinn. Da das GC-System von Cocoa kritisch davon abhängt, zu wissen, welche Zeiger GC sind und welche nicht, führt alles, was dazu führt, dass es den Überblick verliert, zu Problemen wie diesem. Es ist möglich, "fehlerfreien Code" zu schreiben und ihn zur Laufzeit aufgrund von Compiler-/GC-Bugs fehlzuschlagen, die beispielsweise eine globale "__starke" Zeigervariable durch einen anderen Zeiger referenzieren. Ich habe es fast unmöglich gefunden, Arbeitsprogramme mit dem GC-System von Cocoa zu schreiben. – johne

+1

Nun, als der Manager bei Apple verantwortlich für Xcode, ich bin verantwortlich für 2.5MLOC, die Cocoa GC-System verwendet, und wenn wir Fehler wie oben erhalten, ist es fast immer ein Stück Code, der einen Zeiger auf ein GC-Objekt zwischenspeichert Das GC-System wird nicht darüber informiert und dann in den GC-Speicher geschrieben, nachdem das Objekt geerntet wurde. – cdespinosa

0

Wenn dies mit NSOpenPanel in Verbindung mit GC verwandt ist, denke ich, dass es ein bekanntes Problem sein kann. Sieh diesen Thread unter Cocoabuilder, der sich zu beziehen scheint.

0

Der Fehler etwas von RegexKitLite geworfen, wenn ich es eine problematische Zeichenfolge übergeben. Die Fehlermeldung zeigte einen systemweiten Fehler an, der mich so lange verwirrt hat.