gpt4 book ai didi

iphone - KERN_INVALID_ADDRESS 和 KERN_PROTECTION_FAILURE 之间有什么区别?

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

iPhone 操作系统上的 KERN_INVALID_ADDRESSKERN_PROTECTION_FAILURE 有什么区别?

我有两个来自临时 Beta 测试人员的崩溃报告,它们相隔 5 分钟,它们之间的主要区别(“二进制图像:”部分除外)是此部分:

报告A:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008

报告B:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x67696c69

就其值(value)而言,两者都有这样的痕迹:

Thread 0 Crashed:
0 libobjc.A.dylib 0x30011940 objc_msgSend + 20
1 UIKit 0x30940174 -[UIWindow _shouldAutorotateToInterfaceOrientation:] + 60
2 UIKit 0x30a223d8 -[UIWindow _updateToInterfaceOrientation:duration:force:] + 36
3 UIKit 0x30958638 -[UIWindow _updateInterfaceOrientationFromDeviceOrientation] + 112
4 UIKit 0x30942514 -[UIWindow _handleDeviceOrientationChange:] + 72
5 Foundation 0x3054dc7a _nsnote_callback + 178
6 CoreFoundation 0x3024ea52 _CFXNotificationPostNotification + 298
7 Foundation 0x3054b854 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
8 UIKit 0x309414a4 -[UIDevice setOrientation:] + 124
9 UIKit 0x30938330 -[UIApplication handleEvent:withNewEvent:] + 5232
10 UIKit 0x30936ce8 -[UIApplication sendEvent:] + 60
11 UIKit 0x30936874 _UIApplicationHandleEvent + 4336
12 GraphicsServices 0x32046964 PurpleEventCallback + 1028
13 CoreFoundation 0x30254a70 CFRunLoopRunSpecific + 2296
14 CoreFoundation 0x30254164 CFRunLoopRunInMode + 44
15 GraphicsServices 0x3204529c GSEventRunModal + 188
16 UIKit 0x308f0374 -[UIApplication _run] + 552
17 UIKit 0x308eea8c UIApplicationMain + 960
18 MyApp 0x00015e24 0x1000 + 85540
19 MyApp 0x0000f138 0x1000 + 57656

此外,我没有在代码中的任何位置实现“shouldAutorotateToInterfaceOrientation:”方法。

最佳答案

EXC_BAD_ACCESS (SIGBUS) KERN_PROTECTION_FAILURE 表示虚拟地址明显错误:大多数 CPU 必须在某个字节边界上访问内存。由于此处的数据访问是针对 64 位值 (8) 进行对齐的,因此它必须尝试执行获取 128 位值的指令(例如比较和交换指令 CMPXCHG16B)。无论如何,您可以从此处的示例中看到它是 0x00000008,这可能意味着您正在访问从开头偏移 8 个字节的结构元素,但您的结构指针是 NULL.

EXC_BAD_ACCESS (SIGSEGV) KERN_INVALID_ADDRESS 表示您引用的虚拟地址不在页表中或者您无权访问。这是一个虚拟地址,您无权访问。对于您的示例地址地址 0x67696c69 ,这很可能不是一个被视为指针的指针;或者包含指针的数据结构被释放并被其他数据覆盖。

对于您的 KERN_INVALID_ADDRESS 示例,指针数据拼写出 ASCII“ilig”(因为它是小端字节序)。因此,存储指针的内存可能被某种字符串覆盖。

在这两种情况下,很可能有某些东西覆盖了 UIWindow 中的数据结构。

关于iphone - KERN_INVALID_ADDRESS 和 KERN_PROTECTION_FAILURE 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1282428/

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