2009-08-12 39 views
2

我在XCode中遇到了一些非常奇怪的錯誤。每當我運行我的程序,我得到:奇怪的XCode/Objective-C錯誤:失敗的完整性檢查

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

我已經找遍了谷歌,但沒有發現任何人有此錯誤消息。堆棧跟蹤具有不在我的程序中的方法 - 它是XCode正在運行的其他線程。無論如何,我可以獲得更多有關這方面的信息嗎?我已經嘗試卸載/重新安裝XCode(10.5.8,XCode 3.1)。

我正在使用垃圾收集,所以我想知道是否有錯誤。我曾經得到一個不同的錯誤,"missing cpu_capibilites.h,"這將指向一個字符串格式化方法。該錯誤更改爲一個與調試器無法回滾狀態,現在我有這個錯誤。

如果還有其他任何我應該發佈的錯誤信息,請告訴我。

回答

2

發生了什麼事是你的程序或它使用的框架中的東西是寫入未使用的內存(垃圾收集堆)並摧毀未使用的內存中的內部數據結構。當下一次要求AutoZone(GC內存分配器)分配內存時,它會嘗試讀取未分配內存中的結構,發現它們無效並拋出上述消息。

您可以閱讀人提供在http://www.opensource.apple.com/source/autozone/autozone-77.1/AutoAdmin.cpp?f=text

這樣的源所以你需要尋找粉碎器內存。

+0

當你使用GC時,問題不一定就是內存碎片,至少不是在傳統的「free()''free')手動內存管理意義上使用。因爲Cocoa的GC系統嚴重依賴於知道哪些指針是GC,哪些不是,所以導致它丟失跟蹤的任何事情都會導致這樣的問題。例如,可以編寫「無錯代碼」,並在運行時由於編譯器/ GC錯誤而導致失敗 - 例如,通過另一個指針引用全局'__strong'指針變量。我發現用Cocoa的GC系統編寫工作程序幾乎是不可能的。 – johne 2009-08-18 03:10:51

+1

那麼,作爲負責Xcode的Apple經理,我負責使用Cocoa GC系統的2.5MLOC,當我們遇到像上面這樣的失敗時,它幾乎總是一段代碼,它將一個指向GC對象的指針,不告訴GC系統,然後在物體收穫後寫入GC內存。 – cdespinosa 2009-08-18 16:53:22

0

如果這與NSOpenPanel與GC一起使用有關,我認爲這可能是一個已知的問題。看到這個線程在Cocoabuilder似乎涉及。

0

RegexKitLite在傳遞一個有問題的字符串時拋出的錯誤。錯誤信息表明系統範圍的錯誤,這讓我困惑了很久。