我的应用程序崩溃在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
可能导致此错误的原因是什么?
可能导致此错误的原因是什么?
来自堆栈跟踪/返回跟踪的多汁位:
/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中),也许你可以隔离代码和问题。我们可以将调用替换为我们可以控制的东西,即string
到lower case
函数。你应该bullet-proof
string
传递给这个功能(是qazxswpoi?)。
为什么它在本地库中崩溃,我正在使用Java?
所有以Java代码开头的代码都转换为一段本机编译代码。从技术上讲,classes.dex将转换为ELF共享对象。 Android调用此库格式OAT,转换classes.dex文件的工具称为dex2oat。看到这个
null
。