微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nativescript 应用程序适用于模拟器,但不适用于真实设备崩溃报告说 EXC_BAD_ACCESS (SIGSEGV)

如何解决Nativescript 应用程序适用于模拟器,但不适用于真实设备崩溃报告说 EXC_BAD_ACCESS (SIGSEGV)

我有一个 Nativescript-Angular 移动应用程序。它在模拟器上运行良好。但是一旦发布到 Apple Store,它就可以在 iphone 7 等旧型号上运行,但不能在 iphone 10/11/12 上运行。 ios 版本都是14+,所以我不认为这是原因。

我从手机中提取了崩溃报告,其中只有一些类似的错误消息。任何人都可以给我一些想法或指出我如何研究这个的正确方向?

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000000280b350
VM Region Info: 0x280b350 is not in any region.  Bytes before following region: 4324461744
      REGION TYPE                 START - END      [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                   10442c000-104430000 [   16K] r-x/r-x SM=COW  ...e.app/LBELite

Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL,Code 0xb
Terminating Process: exc handler [508]
Triggered by Thread:  0

Thread 0 name:  dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x000000019ffbc658 0x19ffb7000 + 22104
1   libobjc.A.dylib                 0x000000019ffbcf88 0x19ffb7000 + 24456
2   NativeScript                    0x0000000104da4930 0x104d30000 + 477488

...

Thread 1 name:  JavaScriptCore bmalloc scavenger
Thread 1:
0   libsystem_kernel.dylib          0x00000001b8ef41ac 0x1b8ecc000 + 164268
...

Thread 2:
0   libsystem_pthread.dylib         0x00000001d6a58764 0x1d6a4e000 + 42852
...

Thread 3 name:  Heap Helper Thread
Thread 3:
0   libsystem_kernel.dylib          0x00000001b8ef41ac 0x1b8ecc000 + 164268
...

Thread 4 name:  Heap Helper Thread
Thread 4:
0   libsystem_kernel.dylib          0x00000001b8ef41ac 0x1b8ecc000 + 164268
...

Thread 5 name:  Heap Helper Thread
Thread 5:
0   libsystem_kernel.dylib          0x00000001b8ef41ac 0x1b8ecc000 + 164268
...

Thread 6 name:  Heap Helper Thread
Thread 6:
0   libsystem_kernel.dylib          0x00000001b8ef41ac 0x1b8ecc000 + 164268
...

Thread 7 name:  Heap Helper Thread
Thread 7:
0   libsystem_kernel.dylib          0x00000001b8ef41ac 0x1b8ecc000 + 164268
...

Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x000000000280b348   x1: 0x0000000280b34b60   x2: 0x0000000000000000   x3: 0x0000000000000034
    ...

   esr: 0x92000006 (Data Abort) byte read Translation fault

解决方法

您正在使用的运行时库 NativeScript 向 Objective-C 运行时提供了一个值太低的数据指针。当访问此内存位置 0x000000000280b350 时,内核会注意到没有为该地址映射的虚拟内存,从而导致数据中止。您的 esr 寄存器的最高位二进制 100100。ARM 手册说

用于数据访问产生的 MMU 错误、除堆栈指针未对齐引起的对齐错误和同步外部中止,包括同步奇偶校验或 ECC 错误。不用于与调试相关的异常。

低值数据地址的一个常见原因是有一些代码从其他一些基值偏移了一个值,并且得到基值的东西返回 nil,或者给你 0。你的错误值有点对于这样的问题(通常你会看到一个错误的值,比如 0x230 之类的)。

我认为您的代码被破坏的原因是底层库必须具有特定于体系结构的代码方面。代码很可能支持 Intel(假设您使用的是基于 Intel 的 Mac)和较旧的 ARM 芯片,但不支持较新的芯片。 iPhone X 使用的是 A11 仿生芯片。

您是否还有其他使用此技术堆栈但可在最新硬件上运行的应用?你有 iPhone X,在本地能用吗?是否有任何您可以尝试的 NativeScript 支持的更新版本?

出现问题的可能性很小,因为 App Store 在将您的 BitCode 发送给客户之前重新编译了它,这导致了故障。您的构建档案中是否启用了 BitCode?​​p>

,

您使用的是什么版本的 IOS 运行时?在我从 6.5.0 更新到 6.5.4 之前,我遇到了类似的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。