【问题标题】:Strange XCode/Objective-C Error: failed integrity check奇怪的 XCode/Objective-C 错误:完整性检查失败
【发布时间】:2009-08-12 21:48:48
【问题描述】:

我在 XCode 中遇到了一些非常奇怪的错误。每当我运行我的程序时,我都会得到:

malloc: test_node_integrity: FreeListNode 0x1052af0 { _prev = 0xffffffff, _next = 0xffffffff, _size = 0 } 完整性检查失败。

我在 Google 上进行了全面搜索,但没有找到其他人收到此错误消息。堆栈跟踪具有不在我的程序中的方法 - 它是 XCode 正在运行的其他一些线程。无论如何我可以获得更多关于这方面的信息吗?我已经尝试卸载/重新安装 XCode(10.5.8,XCode 3.1)。

我正在使用垃圾收集,所以我想知道那里是否有错误。我曾经得到一个不同的错误,"missing cpu_capibilites.h,",它指向一个字符串格式化方法。错误变成了调试器无法回滚状态的错误,现在我有这个错误。

如果我应该发布任何其他错误信息,请告诉我。

【问题讨论】:

    标签: objective-c xcode


    【解决方案1】:

    发生的情况是,您的程序或它使用的框架中的某些内容正在写入未使用的内存(垃圾收集堆)并破坏未使用的内存中的内部数据结构。下次有东西要求 AutoZone(GC 内存分配器)分配内存时,它会尝试读取未分配内存中的结构,发现它们无效,并抛出上述消息。

    您可以在 http://www.opensource.apple.com/source/autozone/autozone-77.1/AutoAdmin.cpp?f=text 阅读相关的源代码

    所以你需要寻找内存粉碎机。

    【讨论】:

    • 当你在使用GC的时候,问题不一定是内存破坏者,至少在传统的“使用free()”之后手动内存管理意义上的问题不大。因为 Cocoa 的 GC 系统严重依赖于知道哪些指针是 GC 哪些不是,任何导致它失去跟踪的东西都会导致这样的问题。可以编写“无错误代码”并使其在运行时由于编译器/GC 错误而失败 - 例如,通过另一个指针引用全局 __strong 指针变量。我发现用 Cocoa 的 GC 系统编写工作程序几乎是不可能的。
    • 嗯,作为苹果公司负责Xcode的经理,我负责的是使用Cocoa的GC系统的2.5MLOC,当我们遇到上述故障时,几乎都是一段代码缓存一个指向 GC 对象的指针,不告诉 GC 系统,然后在对象被回收后写入 GC 内存。
    【解决方案2】:

    如果这与 NSOpenPanel 与 GC 结合使用有关,我认为这可能是一个已知问题。请参阅Cocoabuilder 上的此线程,这似乎相关。

    【讨论】:

      【解决方案3】:

      当我传递一个有问题的字符串时,RegexKitLite 抛出的错误。错误消息表明系统范围的错误,这让我困惑了这么久。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多