首页 > 解决方案 > Android ART Crash 试图抛出 ArrayOutOfBoundsException

问题描述

我们不时看到 Android 的 ART 代码崩溃。我们在没有边界检查的情况下对一个 int 数组进行索引,然后捕获 Java 的 ArrayIndexOutOfBoundsException 并正确处理它。

我们在许多具有各种 Java 版本的 PC 上运行此代码,并且它可以正常工作。但是,在 Android 上,代码偶尔会爆炸。

我们的一些源代码:

class IdToIndexData {
   private final int tmap[]; // Contents are set elsewhere

    int getTraitsIndexUnchecked(int id) {
        return tmap[id];
    }
}

class DataObjectInfo {
   public Integer getFieldTraits(Class1 map, int id) {
            int traitsIndex=map.getTraitsIndexUnchecked(id);
            return traitsIndex;
        } catch (ArrayIndexOutOfBoundsException e) {
            return null;
        }
    }
}

我无法创建一个简单的测试用例,因为我期望 Android ART 库中存在某种多线程竞争条件。

“I/ObjectDBSet:changesComplete”来自不同的线程(请参阅“消息处理器”线程),但可能会触及调用 getFieldTraits() 的对象之一。int tmp[] 是最终的,因此不会更改。此外,不会替换或更改 DataObjectInfo 和 IdToIndexData 对象。

无论哪种方式,另一个线程都不应该导致 Android 的 ART 库崩溃。

安卓版本/设备:

带有 Android 7.0 版本号 NRD90M.T580UEU2BQL1 的三星 Galaxy Tab A。

从安卓工作室:

构建:3.1.4、AI-173.4907809、201807232114、

AI-173.4907809,JRE 1.8.0_152-release-1024-b01x64 JetBrains sro,OS Linux(amd64) v4.15.0-34-通用未知,屏幕 1920x1080、2560x1600

Android Gradle 插件:3.1.4 Gradle:4.4 NDK:来自 local.properties:(未指定);SDK 的最新版本:(未找到);LLDB:未找到固定的修订版 3.1;SDK 的最新版本:(未找到包);CMake:来自 local.properties:(未指定);SDK 的最新版本:(未找到);从路径:(未找到);

崩溃的完整输出:

A/art: art/runtime/stack.cc:205] Check failed: success Failed to read the this object in int com.hcs.orc.datatype.IdToIndexData.getTraitsIndexUnchecked(int)
I/ObjectDBSet: changesComplete
I/ObjectDBSet: changesComplete
I/ObjectDBSet: changesComplete
I/ObjectDBSet: changesComplete
I/ObjectDBSet: changesComplete
I/ObjectDBSet: changesComplete
I/ObjectDBSet: changesComplete
I/ObjectDBSet: changesComplete
I/ObjectDBSet: changesComplete
A/art: art/runtime/runtime.cc:419] Runtime aborting...
       art/runtime/runtime.cc:419] Aborting thread:
       art/runtime/runtime.cc:419] "main" prio=5 tid=1 Runnable
       art/runtime/runtime.cc:419]   | group="" sCount=0 dsCount=0 obj=0x7546a770 self=0xe4a85400
       art/runtime/runtime.cc:419]   | sysTid=10759 nice=0 cgrp=default sched=0/0 handle=0xe7cf0534
       art/runtime/runtime.cc:419]   | state=R schedstat=( 0 0 0 ) utm=1113 stm=15 core=1 HZ=100
       art/runtime/runtime.cc:419]   | stack=0xff5be000-0xff5c0000 stackSize=8MB
       art/runtime/runtime.cc:419]   | held mutexes= "abort lock" "mutator lock"(shared held)
       art/runtime/runtime.cc:419]   native: #00 pc 00351ce9  /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+128)
       art/runtime/runtime.cc:419]   native: #01 pc 00332205  /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+304)
A/art: art/runtime/runtime.cc:419]   native: #02 pc 003251b1  /system/lib/libart.so (_ZNK3art10AbortState10DumpThreadERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEPNS_6ThreadE+24)
       art/runtime/runtime.cc:419]   native: #03 pc 00324ffb  /system/lib/libart.so (_ZNK3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+362)
       art/runtime/runtime.cc:419]   native: #04 pc 0031bdc7  /system/lib/libart.so (_ZN3art7Runtime5AbortEv+90)
       art/runtime/runtime.cc:419]   native: #05 pc 000b4dcb  /system/lib/libart.so (_ZN3art10LogMessageD2Ev+866)
       art/runtime/runtime.cc:419]   native: #06 pc 00328df5  /system/lib/libart.so (_ZNK3art12StackVisitor13GetThisObjectEv+488)
       art/runtime/runtime.cc:419]   native: #07 pc 00125457  /system/lib/libart.so (_ZN3art19CatchLocationFinder10VisitFrameEv+50)
       art/runtime/runtime.cc:419]   native: #08 pc 00329d71  /system/lib/libart.so (_ZN3art12StackVisitor9WalkStackEb+440)
       art/runtime/runtime.cc:419]   native: #09 pc 0011b18d  /system/lib/libart.so (_ZN3art3Dbg13PostExceptionEPNS_6mirror9ThrowableE+108)
       art/runtime/runtime.cc:419]   native: #10 pc 001c0bb1  /system/lib/libart.so (_ZNK3art15instrumentation15Instrumentation20ExceptionCaughtEventEPNS_6ThreadEPNS_6mirror9ThrowableE+48)
       art/runtime/runtime.cc:419]   native: #11 pc 0033944d  /system/lib/libart.so (_ZN3art6Thread21QuickDeliverExceptionEv+504)
       art/runtime/runtime.cc:419]   native: #12 pc 003f67f9  /system/lib/libart.so (artThrowArrayBoundsFromCode+10)
       art/runtime/runtime.cc:419]   native: #13 pc 0002bab7  /dev/ashmem/dalvik-jit-code-cache_10759_10759 (deleted) (Java_com_hcs_orc_datatype_IdToIndexData_getTraitsIndexUnchecked__I+38)
       art/runtime/runtime.cc:419]   at com.hcs.orc.datatype.IdToIndexData.getTraitsIndexUnchecked(IdToIndexData.java:81)
       art/runtime/runtime.cc:419]   at com.hcs.orc.datatype.DataObjectInfo.getFieldTraits(DataObjectInfo.java:202)
       art/runtime/runtime.cc:419]   at com.hcs.orc.datatype.DataObjectBase.getTraits(DataObjectBase.java:114)
       art/runtime/runtime.cc:419]   at com.hcs.orc.table.config.OutputProfileBase.formatLine(OutputProfileBase.java:141)
       art/runtime/runtime.cc:419]   at com.hcs.android.orpanel.fragments.FutureProcedureFragment.lambda$updateView$0$FutureProcedureFragment(FutureProcedureFragment.java:174)
       art/runtime/runtime.cc:419]   at com.hcs.android.orpanel.fragments.FutureProcedureFragment$$Lambda$0.run(unavailable:-1)
       art/runtime/runtime.cc:419]   at android.os.Handler.handleCallback(Handler.java:751)
       art/runtime/runtime.cc:419]   at android.os.Handler.dispatchMessage(Handler.java:95)
       art/runtime/runtime.cc:419]   at android.os.Looper.loop(Looper.java:154)
       art/runtime/runtime.cc:419]   at android.app.ActivityThread.main(ActivityThread.java:6776)
       art/runtime/runtime.cc:419]   at java.lang.reflect.Method.invoke!(Native method)
       art/runtime/runtime.cc:419]   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
       art/runtime/runtime.cc:419]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
       art/runtime/runtime.cc:419] Dumping all threads without appropriate locks held: thread list lock
       art/runtime/runtime.cc:419] All threads:
       art/runtime/runtime.cc:419] DALVIK THREADS (29):
       art/runtime/runtime.cc:419] "main" prio=5 tid=1 Runnable
       art/runtime/runtime.cc:419]   | group="" sCount=0 dsCount=0 obj=0x7546a770 self=0xe4a85400
       art/runtime/runtime.cc:419]   | sysTid=10759 nice=0 cgrp=default sched=0/0 handle=0xe7cf0534
       art/runtime/runtime.cc:419]   | state=R schedstat=( 0 0 0 ) utm=1115 stm=17 core=3 HZ=100
       art/runtime/runtime.cc:419]   | stack=0xff5be000-0xff5c0000 stackSize=8MB
       art/runtime/runtime.cc:419]   | held mutexes= "abort lock" "mutator lock"(shared held)
       art/runtime/runtime.cc:419]   native: #00 pc 00351ce9  /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+128)
       art/runtime/runtime.cc:419]   native: #01 pc 00332205  /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+304)
       art/runtime/runtime.cc:419]   native: #02 pc 00344357  /system/lib/libart.so (_ZN3art14DumpCheckpoint3RunEPNS_6ThreadE+622)
       art/runtime/runtime.cc:419]   native: #03 pc 0033e0e1  /system/lib/libart.so (_ZN3art10ThreadList13RunCheckpointEPNS_7ClosureE+336)
       art/runtime/runtime.cc:419]   native: #04 pc 0033de01  /system/lib/libart.so (_ZN3art10ThreadList4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEb+180)
       art/runtime/runtime.cc:419]   native: #05 pc 00325005  /system/lib/libart.so (_ZNK3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+372)
       art/runtime/runtime.cc:419]   native: #06 pc 0031bdc7  /system/lib/libart.so (_ZN3art7Runtime5AbortEv+90)
       art/runtime/runtime.cc:419]   native: #07 pc 000b4dcb  /system/lib/libart.so (_ZN3art10LogMessageD2Ev+866)
       art/runtime/runtime.cc:419]   native: #08 pc 00328df5  /system/lib/libart.so (_ZNK3art12StackVisitor13GetThisObjectEv+488)
       art/runtime/runtime.cc:419]   native: #09 pc 00125457  /system/lib/libart.so (_ZN3art19CatchLocationFinder10VisitFrameEv+50)
       art/runtime/runtime.cc:419]   native: #10 pc 00329d71  /system/lib/libart.so (_ZN3art12StackVisitor9WalkStackEb+440)
       art/runtime/runtime.cc:419]   native: #11 pc 0011b18d  /system/lib/libart.so (_ZN3art3Dbg13PostExceptionEPNS_6mirror9ThrowableE+108)
       art/runtime/runtime.cc:419]   native: #12 pc 001c0bb1  /system/lib/libart.so (_ZNK3art15instrumentation15Instrumentation20ExceptionCaughtEventEPNS_6ThreadEPNS_6mirror9ThrowableE+48)
       art/runtime/runtime.cc:419]   native: #13 pc 0033944d  /system/lib/libart.so (_ZN3art6Thread21QuickDeliverExceptionEv+504)
       art/runtime/runtime.cc:419]   native: #14 pc 003f67f9  /system/lib/libart.so (artThrowArrayBoundsFromCode+10)
       art/runtime/runtime.cc:419]   native: #15 pc 0002bab7  /dev/ashmem/dalvik-jit-code-cache_10759_10759 (deleted) (Java_com_hcs_orc_datatype_IdToIndexData_getTraitsIndexUnchecked__I+38)
       art/runtime/runtime.cc:419]   at com.hcs.orc.datatype.IdToIndexData.getTraitsIndexUnchecked(IdToIndexData.java:81)
       art/runtime/runtime.cc:419]   at com.hcs.orc.datatype.DataObjectInfo.getFieldTraits(DataObjectInfo.java:202)
       art/runtime/runtime.cc:419]   at com.hcs.orc.datatype.DataObjectBase.getTraits(DataObjectBase.java:114)
       art/runtime/runtime.cc:419]   at com.hcs.orc.table.config.OutputProfileBase.formatLine(OutputProfileBase.java:141)
       art/runtime/runtime.cc:419]   at com.hcs.android.orpanel.fragments.FutureProcedureFragment.lambda$updateView$0$FutureProcedureFragment(FutureProcedureFragment.java:174)
       art/runtime/runtime.cc:419]   at com.hcs.android.orpanel.fragments.FutureProcedureFragment$$Lambda$0.run(unavailable:-1)
       art/runtime/runtime.cc:419]   at android.os.Handler.handleCallback(Handler.java:751)
       art/runtime/runtime.cc:419]   at android.os.Handler.dispatchMessage(Handler.java:95)
       art/runtime/runtime.cc:419]   at android.os.Looper.loop(Looper.java:154)
       art/runtime/runtime.cc:419]   at android.app.ActivityThread.main(ActivityThread.java:6776)
       art/runtime/runtime.cc:419]   at java.lang.reflect.Method.invoke!(Native method)
       art/runtime/runtime.cc:419]   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
       art/runtime/runtime.cc:419]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
       art/runtime/runtime.cc:419] 
       art/runtime/runtime.cc:419] "Jit thread pool worker thread 0" prio=5 tid=2 Runnable (still starting up)
       art/runtime/runtime.cc:419]   | group="" sCount=0 dsCount=0 obj=0x0 self=0xdb843000
       art/runtime/runtime.cc:419]   | sysTid=10764 nice=9 cgrp=default sched=0/0 handle=0xe41a7920
       art/runtime/runtime.cc:419]   | state=R schedstat=( 0 0 0 ) utm=225 stm=25 core=0 HZ=100
       art/runtime/runtime.cc:419]   | stack=0xe40a9000-0xe40ab000 stackSize=1022KB
       art/runtime/runtime.cc:419]   | held mutexes= "mutator lock"(shared held)
       art/runtime/runtime.cc:419]   native: #00 pc 00351ce9  /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+128)
       art/runtime/runtime.cc:419]   native: #01 pc 00332205  /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+304)
       art/runtime/runtime.cc:419]   native: #02 pc 00344357  /system/lib/libart.so (_ZN3art14DumpCheckpoint3RunEPNS_6ThreadE+622)
       art/runtime/runtime.cc:419]   native: #03 pc 00332d95  /system/lib/libart.so (_ZN3art6Thread21RunCheckpointFunctionEv+144)
       art/runtime/runtime.cc:419]   native: #04 pc 000f042d  /system/lib/libart-compiler.so (???)
       art/runtime/runtime.cc:419]   native: #05 pc 00136655  /system/lib/libart-compiler.so (_ZN3art19HInstructionBuilder22BuildStaticFieldAccessERKNS_11InstructionEjb+2608)
       art/runtime/runtime.cc:419]   native: #06 pc 0012e5dd  /system/lib/libart-compiler.so (_ZN3art19HInstructionBuilder21ProcessDexInstructionERKNS_11InstructionEj+580)
       art/runtime/runtime.cc:419]   native: #07 pc 0012de5d  /system/lib/libart-compiler.so (_ZN3art19HInstructionBuilder5BuildEv+1176)
       art/runtime/runtime.cc:419]   native: #08 pc 00112c9d  /system/lib/libart-compiler.so (_ZN3art13HGraphBuilder10BuildGraphEv+84)
       art/runtime/runtime.cc:419]   native: #09 pc 0015720b  /system/lib/libart-compiler.so (_ZNK3art18OptimizingCompiler10TryCompileEPNS_14ArenaAllocatorEPNS_19CodeVectorAllocatorEPKNS_7DexFile8CodeItemEjNS_10InvokeTypeEtjP8_jobjectRKS5_NS_6HandleINS_6mirror8DexCacheEEEPNS_9ArtMethodEb+2454)
       art/runtime/runtime.cc:419]   native: #10 pc 00158e47  /system/lib/libart-compiler.so (_ZN3art18OptimizingCompiler10JitCompileEPNS_6ThreadEPNS_3jit12JitCodeCacheEPNS_9ArtMethodEb+330)
       art/runtime/runtime.cc:419]   native: #11 pc 00107f1f  /system/lib/libart-compiler.so (_ZN3art3jit11JitCompiler13CompileMethodEPNS_6ThreadEPNS_9ArtMethodEb+194)
       art/runtime/runtime.cc:419]   native: #12 pc 002506a3  /system/lib/libart.so (_ZN3art3jit3Jit13CompileMethodEPNS_9ArtMethodEPNS_6ThreadEb+318)
       art/runtime/runtime.cc:419]   native: #13 pc 00251dc7  /system/lib/libart.so (_ZN3art3jit14JitCompileTask3RunEPNS_6ThreadE+430)
       art/runtime/runtime.cc:419]   native: #14 pc 003450c9  /system/lib/libart.so (_ZN3art16ThreadPoolWorker3RunEv+44)
       art/runtime/runtime.cc:419]   native: #15 pc 00344c01  /system/lib/libart.so (_ZN3art16ThreadPoolWorker8CallbackEPv+64)
       art/runtime/runtime.cc:419]   native: #16 pc 00047f93  /system/lib/libc.so (_ZL15__pthread_startPv+22)
       art/runtime/runtime.cc:419]   native: #17 pc 0001a161  /system/lib/libc.so (__start_thread+6)
       art/runtime/runtime.cc:419]   (no managed stack frames)
       art/runtime/runtime.cc:419] 
       art/runtime/runtime.cc:419] "Signal Catcher" prio=5 tid=3 WaitingInMainSignalCatcherLoop
       art/runtime/runtime.cc:419]   | group="" sCount=1 dsCount=0 obj=0x12c44670 self=0xd9b98900
       art/runtime/runtime.cc:419]   | sysTid=10765 nice=0 cgrp=default sched=0/0 handle=0xe40a6920
       art/runtime/runtime.cc:419]   | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=1 HZ=100
A/art: art/runtime/runtime.cc:419]   | stack=0xe3faa000-0xe3fac000 stackSize=1014KB
       art/runtime/runtime.cc:419]   | held mutexes=
       art/runtime/runtime.cc:419]   kernel: __switch_to+0x80/0x8c
       art/runtime/runtime.cc:419]   kernel: do_sigtimedwait+0xdc/0x1bc
       art/runtime/runtime.cc:419]   kernel: compat_SyS_rt_sigtimedwait+0x98/0xd8
       art/runtime/runtime.cc:419]   kernel: __sys_trace+0x48/0x4c
       art/runtime/runtime.cc:419]   native: #00 pc 00049780  /system/lib/libc.so (__rt_sigtimedwait+12)
       art/runtime/runtime.cc:419]   native: #01 pc 0001e933  /system/lib/libc.so (sigwait+34)
       art/runtime/runtime.cc:419]   native: #02 pc 003282df  /system/lib/libart.so (_ZN3art9SignalSet4WaitEv+22)
       art/runtime/runtime.cc:419]   native: #03 pc 00327ed9  /system/lib/libart.so (_ZN3art13SignalCatcher13WaitForSignalEPNS_6ThreadERNS_9SignalSetE+168)
       art/runtime/runtime.cc:419]   native: #04 pc 00326b1b  /system/lib/libart.so (_ZN3art13SignalCatcher3RunEPv+302)
       art/runtime/runtime.cc:419]   native: #05 pc 00047f93  /system/lib/libc.so (_ZL15__pthread_startPv+22)
       art/runtime/runtime.cc:419]   native: #06 pc 0001a161  /system/lib/libc.so (__start_thread+6)
       art/runtime/runtime.cc:419]   (no managed stack frames)
       art/runtime/runtime.cc:419] 
       art/runtime/runtime.cc:419] "JDWP" prio=5 tid=4 WaitingInMainDebuggerLoop
       art/runtime/runtime.cc:419]   | group="" sCount=1 dsCount=0 obj=0x12c445e0 self=0xdb844400
       art/runtime/runtime.cc:419]   | sysTid=10766 nice=0 cgrp=default sched=0/0 handle=0xe3fa7920
       art/runtime/runtime.cc:419]   | state=S schedstat=( 0 0 0 ) utm=44 stm=15 core=0 HZ=100
       art/runtime/runtime.cc:419]   | stack=0xe3eab000-0xe3ead000 stackSize=1014KB
       art/runtime/runtime.cc:419]   | held mutexes=
       art/runtime/runtime.cc:419]   kernel: __switch_to+0x80/0x8c
       art/runtime/runtime.cc:419]   kernel: poll_schedule_timeout+0x40/0x68
       art/runtime/runtime.cc:419]   kernel: do_select+0x4bc/0x500
       art/runtime/runtime.cc:419]   kernel: compat_core_sys_select+0x158/0x20c
       art/runtime/runtime.cc:419]   kernel: compat_SyS_pselect6+0x174/0x210
       art/runtime/runtime.cc:419]   kernel: __sys_trace+0x48/0x4c
       art/runtime/runtime.cc:419]   native: #00 pc 00049658  /system/lib/libc.so (__pselect6+20)
       art/runtime/runtime.cc:419]   native: #01 pc 0001d539  /system/lib/libc.so (select+88)
       art/runtime/runtime.cc:419]   native: #02 pc 003fe093  /system/lib/libart.so (_ZN3art4JDWP12JdwpAdbState15ProcessIncomingEv+302)
       art/runtime/runtime.cc:419]   native: #03 pc 002497ef  /system/lib/libart.so (_ZN3art4JDWP9JdwpState3RunEv+654)
       art/runtime/runtime.cc:419]   native: #04 pc 00248f8f  /system/lib/libart.so (_ZN3art4JDWPL15StartJdwpThreadEPv+22)
       art/runtime/runtime.cc:419]   native: #05 pc 00047f93  /system/lib/libc.so (_ZL15__pthread_startPv+22)
       art/runtime/runtime.cc:419]   native: #06 pc 0001a161  /system/lib/libc.so (__start_thread+6)
       art/runtime/runtime.cc:419]   (no managed stack frames)
       art/runtime/runtime.cc:419] 
       art/runtime/runtime.cc:419] "MessageProcessor" prio=5 tid=17 Runnable
       art/runtime/runtime.cc:419]   | group="" sCount=0 dsCount=0 obj=0x12ce11a0 self=0xde362d00
       art/runtime/runtime.cc:419]   | sysTid=11066 nice=0 cgrp=default sched=0/0 handle=0xc561e920
       art/runtime/runtime.cc:419]   | state=R schedstat=( 0 0 0 ) utm=388 stm=5 core=2 HZ=100
       art/runtime/runtime.cc:419]   | stack=0xc551c000-0xc551e000 stackSize=1038KB
       art/runtime/runtime.cc:419]   | held mutexes= "mutator lock"(shared held)
       art/runtime/runtime.cc:419]   native: #00 pc 00351ce9  /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+128)
       art/runtime/runtime.cc:419]   native: #01 pc 00332205  /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+304)
       art/runtime/runtime.cc:419]   native: #02 pc 00344357  /system/lib/libart.so (_ZN3art14DumpCheckpoint3RunEPNS_6ThreadE+622)
       art/runtime/runtime.cc:419]   native: #03 pc 00332d95  /system/lib/libart.so (_ZN3art6Thread21RunCheckpointFunctionEv+144)
       art/runtime/runtime.cc:419]   native: #04 pc 0020dea3  /system/lib/libart.so (_ZN3art11interpreter17ExecuteSwitchImplILb0ELb0EEENS_6JValueEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameES2_b+51530)
       art/runtime/runtime.cc:419]   native: #05 pc 001cbded  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+368)
       art/runtime/runtime.cc:419]   native: #06 pc 001d084f  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+114)
       art/runtime/runtime.cc:419]   native: #07 pc 001e7f67  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+450)
       art/runtime/runtime.cc:419]   native: #08 pc 001fff3d  /system/lib/libart.so (_ZN3art11interpreterL20DoInvokeVirtualQuickILb0EEEbPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+304)
       art/runtime/runtime.cc:419]   native: #09 pc 002055db  /system/lib/libart.so (_ZN3art11interpreter17ExecuteSwitchImplILb0ELb0EEENS_6JValueEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameES2_b+16514)
       art/runtime/runtime.cc:419]   native: #10 pc 001cbded  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+368)
       art/runtime/runtime.cc:419]   native: #11 pc 001d084f  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+114)
       art/runtime/runtime.cc:419]   native: #12 pc 001e7f67  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+450)
       art/runtime/runtime.cc:419]   native: #13 pc 001fff3d  /system/lib/libart.so (_ZN3art11interpreterL20DoInvokeVirtualQuickILb0EEEbPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+304)
       art/runtime/runtime.cc:419]   native: #14 pc 002055db  /system/lib/libart.so (_ZN3art11interpreter17ExecuteSwitchImplILb0ELb0EEENS_6JValueEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameES2_b+16514)
       art/runtime/runtime.cc:419]   native: #15 pc 001cbded  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+368)
       art/runtime/runtime.cc:419]   native: #16 pc 001d084f  /system/lib/libart.so (_ZN3art11interpreter33ArtInterpreterToInterpreterBridgeEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameEPNS_6JValueE+114)
       art/runtime/runtime.cc:419]   native: #17 pc 001e7f67  /system/lib/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+450)
       art/runtime/runtime.cc:419]   native: #18 pc 001fff3d  /system/lib/libart.so (_ZN3art11interpreterL20DoInvokeVirtualQuickILb0EEEbPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+304)
       art/runtime/runtime.cc:419]   native: #19 pc 002055db  /system/lib/libart.so (_ZN3art11interpreter17ExecuteSwitchImplILb0ELb0EEENS_6JValueEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameES2_b+16514)
       art/runtime/runtime.cc:419]   native: #20 pc 001cbded  /system/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadEPKNS_7DexFile8CodeItemERNS_11ShadowFrameENS_6JValueEb+368)
       art/runtime/runtime.cc:419]   native: #21 pc 001d07b9  /system/lib/libart.so (_ZN3art11interpreter30EnterInterpreterFromEntryPointEPNS_6ThreadEPKNS_7DexFile8CodeItemEPNS_11ShadowFrameE+92)
       art/runtime/runtime.cc:419]   native: #22 pc 003f6dbd  /system/lib/libart.so (artQuickToInterpreterBridge+716)
       art/runtime/runtime.cc:419]   native: #23 pc 000add93  /system/lib/libart.so (art_quick_to_interpreter_bridge+34)
       art/runtime/runtime.cc:419]   native: #24 pc 0001b4b1  /dev/ashmem/dalvik-jit-code-cache_10759_10759 (deleted) (???)
       art/runtime/runtime.cc:419]   at java.lang.Boolean.booleanValue(Boolean.java:132)
       art/runtime/runtime.cc:419]   at com.hcs.orc.data.Parameter.isFeatureSchedulingEnabled(Parameter.java:1349)
       art/runtime/runtime.cc:419]   at com.hcs.orc.datatype.logic.ProcedureLogic.isAppointmentRequest(ProcedureLogic.java:439)
       art/runtime/runtime.cc:419]   at com.hcs.android.orc.service.datatype.Procedure.isAppointmentRequest(Procedure.java:260)
       art/runtime/runtime.cc:419]   at com.hcs.orc.data.odb.ProcedureComparator.compare(ProcedureComparator.java:83)
       art/runtime/runtime.cc:419]   at com.hcs.orc.data.odb.ProcedureComparator.compare(ProcedureComparator.java:32)
       art/runtime/runtime.cc:419]   at java.util.TimSort.countRunAndMakeAscending(TimSort.java:360)
       art/runtime/runtime.cc:419]   at java.util.TimSort.sort(TimSort.java:220)
       art/runtime/runtime.cc:419]   at java.util.Arrays.sort(Arrays.java:1450)
       art/runtime/runtime.cc:419]   at java.util.Collections.sort(Collections.java:243)
       art/runtime/runtime.cc:419]   at com.hcs.orc.data.IndexedVector.sort(IndexedVector.java:216)
       art/runtime/runtime.cc:419]   at com.hcs.orc.data.odb.ProcedureDBLogic.sort(ProcedureDBLogic.java:61)
       art/runtime/runtime.cc:419]   at com.hcs.android.orc.service.datatype.Procedure$DB.sort(Procedure.java:583)
       art/runtime/runtime.cc:419]   at com.hcs.android.orc.service.data.ObjectDBSet.publishChangesComplete(ObjectDBSet.java:212)
       art/runtime/runtime.cc:419]   - locked <0x08c86602> (a com.hcs.android.orc.service.data.ObjectDBSet)
       art/runtime/runtime.cc:419]   at com.hcs.android.orc.service.message.DataMessageHandler.handle(DataMessageHandler.java:77)
       art/runtime/runtime.cc:419]   at com.hcs.android.orc.service.message.MessageProcessor.processMessage(MessageProcessor.java:119)
       art/runtime/runtime.cc:419]   at com.hcs.android.orc.service.message.MessageProcessor.work(MessageProcessor.java:95)
       art/runtime/runtime.cc:419]   at com.hcs.util.OAThread.run(OAThread.java:45)
       art/runtime/runtime.cc:419] 
       art/runtime/runtime.cc:419] "Thread-8" prio=5 tid=25 Native
       art/runtime/runtime.cc:419]   | group="" sCount=1 dsCount=0 obj=0x12fa7d30 self=0xde363700
       art/runtime/runtime.cc:419]   | sysTid=11075 nice=0 cgrp=default sched=0/0 handle=0xc3d71920
       art/runtime/runtime.cc:419]   | state=S schedstat=( 0 0 0 ) utm=4210 stm=328 core=0 HZ=100
       art/runtime/runtime.cc:419]   | stack=0xc3c6f000-0xc3c71000 stackSize=1038KB
       art/runtime/runtime.cc:419]   | held mutexes=
       art/runtime/runtime.cc:419]   kernel: __switch_to+0x80/0x8c
       art/runtime/runtime.cc:419]   kernel: futex_wait_queue_me+0xe0/0x144
       art/runtime/runtime.cc:419]   kernel: futex_wait+0xe8/0x1d8
       art/runtime/runtime.cc:419]   kernel: do_futex+0xc8/0x860
       art/runtime/runtime.cc:419]   kernel: compat_SyS_futex+0xc8/0x144
       art/runtime/runtime.cc:419]   kernel: __sys_trace+0x48/0x4c
       art/runtime/runtime.cc:419]   native: #00 pc 00017530  /system/lib/libc.so (syscall+28)
       art/runtime/runtime.cc:419]   native: #01 pc 00076bbf  /system/lib/libmedia.so (_ZN7android11ClientProxy12obtainBufferEPNS_5Proxy6BufferEPK8timespecPS4_+554)
       art/runtime/runtime.cc:419]   native: #02 pc 000870d7  /system/lib/libmedia.so (_ZN7android11AudioRecord12obtainBufferEPNS0_6BufferEPK8timespecPS3_Pj+202)
       art/runtime/runtime.cc:419]   native: #03 pc 0008728b  /system/lib/libmedia.so (_ZN7android11AudioRecord4readEPvjb+150)
       art/runtime/runtime.cc:419]   native: #04 pc 000b08df  /system/lib/libandroid_runtime.so (???)
       art/runtime/runtime.cc:419]   native: #05 pc 004cf95f  /system/framework/arm/boot-framework.oat (Java_android_media_AudioRecord_native_1read_1in_1short_1array___3SIIZ+122)
       art/runtime/runtime.cc:419]   at android.media.AudioRecord.native_read_in_short_array(Native method)
       art/runtime/runtime.cc:419]   at android.media.AudioRecord.read(AudioRecord.java:1243)
       art/runtime/runtime.cc:419]   at android.media.AudioRecord.read(AudioRecord.java:1197)
       art/runtime/runtime.cc:419]   at edu.cmu.pocketsphinx.SpeechRecognizer$RecognizerThread.run(SpeechRecognizer.java:344)
       art/runtime/runtime.cc:419]

A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 10759 (android.orpanel)

注意:删除了一些等待 StackOverFlow 上 30,000 字符限制的线程。

更新 1

我的问题不是寻找解决方法(我们可以实现自己的边界检查,但不要这样做,因为几年前的分析表明我们需要改进这段代码,这是一种方法)。

相反,我正在寻找关于我的代码如何导致此问题的解释(即,它确实是我的错误)或者它是否是已知的 Android 错误。

标签: javaandroidcrash

解决方案


我发现这是一个Android错误:

https://issuetracker.google.com/issues/116246633

使用边界检查作为解决方法,而不是依赖 Android 来正确抛出 ArrayIndexOutOfBoundsException。


推荐阅读