本机应用程序崩溃-获取内存地址问题-com.android.runtime / lib64 / libart.so&#00 0x00000000afef03c4 <未知>

问题描述

我正在将32位NDK项目迁移到64位。 我们在项目中调用了许多库: 像-libssl.so,libcrypto.so,libc.so,liblog.so,libcrashlytics.so

在将要通过fopen读取内核进程的项目中,但是由于某种原因,我收到致命信号错误和Android logcat,如下所示:

A / libc:致命信号11(SIGSEGV),代码1(SEGV_MAPERR),故障加法器 TID 12462(eradocs.android)中的0xafef03c4,pid 12462(eradocs.android)

======================== 在堆栈跟踪中找到的崩溃转储下方

#00 0x00000000afef03c4-此内存地址与上述致命信号错误匹配。

#06 0x000000000013f350 /apex/com.android.runtime/lib64/libart.so(art_quick_generic_jni_trampoline + 144)(BuildId: d700c52998d7d76cb39e2001d670e654)

#07 0x00000000001365b8 /apex/com.android.runtime/lib64/libart.so(art_quick_invoke_static_stub + 568)(BuildId: d700c52998d7d76cb39e2001d670e654)

#08 0x000000000014500c /apex/com.android.runtime/lib64/libart.so(art :: ArtMethod :: Invoke(art :: Thread *,unsigned int *,unsigned int, art :: JValue *,char const *)+ 276)(BuildId: d700c52998d7d76cb39e2001d670e654)

#09 0x00000000002e2928 /apex/com.android.runtime/lib64/libart.so(art :: interpreter :: ArtInterpreterToCompiledCodeBridge(art :: Thread *, art :: ArtMethod *,art :: ShadowFrame *,unsigned short,art​​ :: JValue *)+ 384) (BuildId:d700c52998d7d76cb39e2001d670e654)

#10 0x00000000002ddb88 /apex/com.android.runtime/lib64/libart.so(布尔型艺术::解释器:: DoCall (art :: ArtMethod *,art :: Thread *, art :: ShadowFrame&,art :: Instruction const *,unsigned short, art :: JValue *)+ 892)(BuildId:d700c52998d7d76cb39e2001d670e654)

#11 0x00000000005a28ac /apex/com.android.runtime/lib64/libart.so(MterpInvokeStatic + 372)(BuildId:d700c52998d7d76cb39e2001d670e654)

#12 0x0000000000130994 /apex/com.android.runtime/lib64/libart.so(mterp_op_invoke_static + 20)(BuildId: d700c52998d7d76cb39e2001d670e654)

#14 0x00000000002b3c3c /apex/com.android.runtime/lib64/libart.so

有人可以帮助我进行此堆栈跟踪吗?有没有办法找到这个的根本原因?

解决方法

我敢打赌,您的一个库利用funopen技巧能够从本机代码读取资产。这种技巧曾经奏效,但是随着Android和NDK的发展,这种黑客很快就变得过时了。我一直使用它,直到升级NDK并遇到类似的崩溃。

请参见NDK问题#562和旧的blog post。两者都提到此SIGSEGV错误。

一些快速指针包括:

  • 检查是否定义了_BSD_SOURCE
  • 您是否升级了NDK?
  • 您更改了minSdkVersion吗?
  • 您从gcc更改为Clang吗?

我针对此崩溃的解决方案是完全避免funopen

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...