【问题标题】:Nativescript app works on simulator but not on real device. Crash report says EXC_BAD_ACCESS (SIGSEGV)Nativescript 应用程序可以在模拟器上运行,但不能在真实设备上运行。崩溃报告说 EXC_BAD_ACCESS (SIGSEGV)
【发布时间】:2021-04-01 17:03:17
【问题描述】:

我有一个Nativescript-Angular 移动应用程序。它在模拟器上运行良好。但是一旦发布到 Apple 商店,它就可以在 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

【问题讨论】:

    标签: ios nativescript angular2-nativescript


    【解决方案1】:

    您正在使用的运行时库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>

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-03-27
        • 1970-01-01
        • 1970-01-01
        • 2022-10-02
        • 1970-01-01
        • 2022-01-17
        • 2015-07-26
        相关资源
        最近更新 更多