代码之家  ›  专栏  ›  技术社区  ›  Karim Mohamed Hasebou

SEGILL android ndk代码

  •  -1
  • Karim Mohamed Hasebou  · 技术社区  · 6 年前

    我开发了一个库,在x86-64位机器上进行了测试,它可以正常工作并成功通过测试。当我把它放在android应用程序中时,代码会停在一个构造函数中,该构造函数只会将其所有变量初始化为默认值(指针被指定为null,布尔值被指定为false…)。我已经为x86-64位设置了目标,因此我确信部署不同的体系结构不会有问题。我怎样才能找出问题的根源,因为如果我在构造函数中注释掉初始化,它将在再次出现SEGILL错误之前执行大量代码?我在模拟器中使用android 8 x64位intel映像。此外,log cat没有显示任何内容,唯一的错误是SEGILL。

    似乎大多数情况下,执行一些指针操作会导致问题。简单地用null或new初始化指针会导致应用程序崩溃。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Karim Mohamed Hasebou    6 年前

    我没有启用SSE,而是启用了android不支持的avx,因此clang使用avx优化了一些部分,这导致了SIGILL。