gpt4 book ai didi

ios - 免费崩溃()

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:42 25 4
gpt4 key购买 nike

我有几个来自 iOS 应用程序的崩溃报告,这些崩溃报告源于 free() 调用中的 SIGABRT。

调用栈是一致的:

0   libsystem_kernel.dylib              0x3863c1f0 __pthread_kill + 8
1 libsystem_c.dylib 0x385ecfdd abort + 77
2 libsystem_malloc.dylib 0x38664d67 free + 383

我正在尝试进行更多诊断,但与此同时,有人遇到过同样的情况吗?什么样的错误参数会使 free() 调用崩溃?我可以看到几个选项:

  • 一个空指针 (实际上是合法的)
  • 数据区指针(即字符串文字)
  • 堆栈指针
  • 一个垃圾指针(即一个未初始化的指针)
  • 一个已经被释放的堆指针

有什么想法吗?很少见,最后一次是在九月'14。但我总共有 10 多个,那里可能有一个错误。

最佳答案

如果我正确读取堆栈转储,代码会在 free 中触发断言并调用 abort。在 http://opensource.apple.com 上查看 libsystem_malloc 的源代码并尝试找出哪个断言失败了。

您有一个杂散指针,猜测它隐藏在单个不可重现的崩溃中的位置几乎是不可能的。使用 valgrind(如果可能)在模拟器中运行您的应用程序可能有助于您跟踪内存滥用情况。

如果堆栈转储超过 3 行,您应该知道是哪个 free 调用导致了问题。它可能会帮助您跟踪错误,但它也可能是某些早期指针误用的后期副作用。

关于ios - 免费崩溃(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28973502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com