应用程序在使用Android 6.0的LG手机上的libicuuc.so中的本机代码中崩溃

问题描述 投票:3回答:1

我的应用程序崩溃在libicuuc.so文件中。它只发生在安装了Android 6.0的LG手机上。我搜查了但是我没有发现任何类似的问题。这是来自Google Play的堆栈跟踪:

Build fingerprint: 'lge/p1bssn_global_com/p1bssn:6.0/MRA58K/1635010184e9f:user/release-keys'
Revision: '6'
ABI: 'arm'
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xba45f000
    r0 00000000  r1 00000000  r2 0000133b  r3 becaf54c
    r4 0000133a  r5 0000133a  r6 becaf54c  r7 becaf50c
    r8 becaf80c  r9 0000a972  sl ba45c98c  fp 9b7444bc
    ip b65d3bc0  sp becaf4d0  lr b650c821  pc b650c7d2  cpsr 00000030

backtrace:
    #00 pc 000577d2  /system/lib/libicuuc.so
    #01 pc 0005804d  /system/lib/libicuuc.so
    #02 pc 0005739f  /system/lib/libicuuc.so
    #03 pc 000a33d7  /system/lib/libicuuc.so (u_strToLower_55+130)
    #04 pc 00046997  /system/lib/libsqlite.so

可能导致此错误的原因是什么?

android sqlite android-6.0-marshmallow native-code lg
1个回答
0
投票

可能导致此错误的原因是什么?

来自堆栈跟踪/返回跟踪的多汁位:

/system/lib/libicuuc.so
ABI: 'arm'
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xba45f000
#03 pc 000a33d7  /system/lib/libicuuc.so (u_strToLower_55+130)

International Components for Unicode(ICU)是一个开源项目,包含成熟的C / C ++和Java库,用于Unicode支持,软件国际化和软件全球化。 ICU可广泛移植到许多操作系统和环境中。它为应用程序在所有平台上以及C,C ++和Java软件之间提供相同的结果。 ICU项目由IBM和许多其他公司赞助,支持和使用。 International Components for Unicode

它在函数u_strToLower(SIGSEGV,分段错误,试图读取或写入非法内存位置)中崩溃,因此在代码中搜索"ToLower"方法(在java中),也许你可以隔离代码和问题。我们可以将调用替换为我们可以控制的东西,即stringlower case函数。你应该bullet-proof string传递给这个功能(是qa​​zxswpoi?)。

为什么它在本地库中崩溃,我正在使用Java?

所有以Java代码开头的代码都转换为一段本机编译代码。从技术上讲,classes.dex将转换为ELF共享对象。 Android调用此库格式OAT,转换classes.dex文件的工具称为dex2oat。看到这个null

© www.soinside.com 2019 - 2024. All rights reserved.