gpt4 book ai didi

iphone - 没有调用跟踪的过度释放(使用 ARC),main 中的访问错误

转载 作者:行者123 更新时间:2023-12-03 20:28:28 25 4
gpt4 key购买 nike

我最近转而使用 ARC。但是,我现在遇到了奇怪的崩溃,并且崩溃日志确实没有帮助。在我的一个应用程序初始化过程中(从服务器获取数据、解析数据、设置 View ),我得到了 bad_access。这是设备的错误日志:

    Incident Identifier: 7CE05452-7C5D-424A-8529-AE7B17C9FEBC
CrashReporter Key: b743ede30ce737293cf7444f67bb8a7b590c2fd9
Hardware Model: iPhone3,1
Process: BoreBeta [231]
Path: /var/mobile/Applications/52A15437-459A-4160-95C4-BF5DF5C98C15/BoreBeta.app/BoreBeta
Identifier: BoreBeta
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]

Date/Time: 2011-08-18 14:53:41.800 +0200
OS Version: iPhone OS 5.0 (9A5288d)
Report Version: 104

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x80000004
Crashed Thread: 0

Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 CoreFoundation 0x3758e380 CFRelease + 28
1 CoreFoundation 0x375a93ec -[__NSArrayM dealloc] + 116
2 libobjc.A.dylib 0x30a4e0be _objc_rootRelease + 30
3 libobjc.A.dylib 0x30a4fdb0 objc_release + 32
4 libobjc.A.dylib 0x30a4ee06 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 218
5 libobjc.A.dylib 0x30a4ed22 _objc_autoreleasePoolPop + 6
6 CoreFoundation 0x3759f050 _CFAutoreleasePoolPop + 12
7 Foundation 0x337cd460 -[NSAutoreleasePool release] + 120
8 UIKit 0x33b8d948 _UIApplicationHandleEvent + 6664
9 GraphicsServices 0x30ff8ef4 PurpleEventCallback + 876
10 CoreFoundation 0x3760a9c4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
11 CoreFoundation 0x3760a966 __CFRunLoopDoSource1 + 134
12 CoreFoundation 0x3760958c __CFRunLoopRun + 1364
13 CoreFoundation 0x375ab036 CFRunLoopRunSpecific + 294
14 CoreFoundation 0x375aaefe CFRunLoopRunInMode + 98
15 UIKit 0x33b8b758 -[UIApplication _run] + 544
16 UIKit 0x33b8898a UIApplicationMain + 1074
17 BoreBeta 0x00002d8a main (main.m:14)
18 BoreBeta 0x000027f8 start + 32

Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x3140d214 kevent + 24
1 libdispatch.dylib 0x376aaf60 _dispatch_mgr_invoke + 708
2 libdispatch.dylib 0x376aac7e _dispatch_mgr_thread + 30

等等,我相信这是唯一有用的部分。当我让它在 XCode 中运行时崩溃时,我看到它在 main 中崩溃,除了上面的 main、UIApplicationMain 和 CFRelease 之外,我看不到任何调用跟踪。

过去,我会检查代码以查找过度释放对象的情况,但我怀疑情况是否如此,因为我现在使用的是 ARC。你如何修复这样的错误?

编辑:解析数据的代码位于使用 GCD 的单独线程上,这就是我唯一的 @autoreleasepool 所在的位置。

此外,当使用 NSZombieEnabled 运行时,我收到 NSArrayM 发布调用。不幸的是,这与我们在崩溃日志中读到的内容相同,所以恐怕这里仍然没有真正的进展......

编辑:好的。当我在没有 ARC 的情况下修复了所有其他内存错误后,我再次收到此错误。所以显然它与 ARC 无关......

最佳答案

最近引入的已知错误。

在未来版本中修复(请注意,Xcode 4.2 处于 NDA 之下,但 llvm-commits 则不然)。提交消息是 available here 。提交消息有点模糊,但它应该涵盖您所看到的情况 - 如果下一个编译器版本不是这种情况(或者您可以自己构建一个,如果有动力的话),请立即提交错误并发布错误#在这里。

关于iphone - 没有调用跟踪的过度释放(使用 ARC),main 中的访问错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7109107/

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