-
Notifications
You must be signed in to change notification settings - Fork 92
Closed
Labels
Description
Recently, I encountered a crash while read file from external storage. Stack trace shown below:
最近在开发的时候,偶遇到扫描 SD 卡文件列表直接崩溃的情况,报错堆栈如下:
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal continuation byte 0
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] string: '如何看待微�'
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] input: '0xe5 0xa6 0x82 0xe4 0xbd 0x95 0xe9 0xab 0x98 0xe5 0xa7 0xbf 0xe6 0x80 0x81 0xe7 0x9a 0x84 0xe7 0x9c 0x8b 0xe5 0xbe 0x85 0xe5 0xbe 0xae 0xe5'
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] in call to NewStringUTF
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] from java.lang.String[] java.io.UnixFileSystem.list0(java.io.File)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] "Thread-3" prio=5 tid=16 Runnable
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] | group="main" sCount=0 dsCount=0 obj=0x12c499d0 self=0x7dbc733000
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] | sysTid=24867 nice=0 cgrp=default sched=0/0 handle=0x7dac507450
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] | state=R schedstat=( 3096354 2114062 5 ) utm=0 stm=0 core=6 HZ=100
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] | stack=0x7dac405000-0x7dac407000 stackSize=1037KB
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] | held mutexes= "mutator lock"(shared held)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #00 pc 0000000000480e20 /system/lib64/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+220)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #01 pc 0000000000480e1c /system/lib64/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+216)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #02 pc 00000000004554b4 /system/lib64/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+472)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #03 pc 00000000002f0124 /system/lib64/libart.so (_ZN3art9JavaVMExt8JniAbortEPKcS2_+1128)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #04 pc 00000000002f080c /system/lib64/libart.so (_ZN3art9JavaVMExt9JniAbortVEPKcS2_St9__va_list+120)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #05 pc 00000000001034e8 /system/lib64/libart.so (_ZN3art11ScopedCheck6AbortFEPKcz+156)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #06 pc 00000000001041e4 /system/lib64/libart.so (_ZN3art11ScopedCheck14CheckUtfStringEPKcb+1344)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #07 pc 0000000000100be8 /system/lib64/libart.so (_ZN3art11ScopedCheck5CheckERNS_18ScopedObjectAccessEbPKcPNS_12JniValueTypeE+1120)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #08 pc 00000000000fb728 /system/lib64/libart.so (_ZN3art8CheckJNI12NewStringUTFEP7_JNIEnvPKc+624)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #09 pc 0000000000021944 /system/lib64/libopenjdk.so (Java_java_io_UnixFileSystem_list0+468)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] native: #10 pc 000000000006702c /data/dalvik-cache/arm64/system@framework@boot.oat (Java_java_io_UnixFileSystem_list0__Ljava_io_File_2+152)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] at java.io.UnixFileSystem.list0(Native method)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] at java.io.UnixFileSystem.list(UnixFileSystem.java:301)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] at java.io.File.list(File.java:1059)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] at java.io.File.listFiles(File.java:1137)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] at me.rosuh.filepicker.utils.FileUtils$Companion.produceListDataSource(FileUtils.kt:53)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] at me.rosuh.filepicker.FilePickerActivity$loadFileRunnable$2$1.run(FilePickerActivity.kt:53)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470] at java.lang.Thread.run(Thread.java:776)
2020-04-30 10:26:30.008 24795-24867/me.rosuh.androidfilepicker A/art: art/runtime/java_vm_ext.cc:470]
After some debugging, the reason is that there is a file name that not encoded in UTF-8 format. This crash will only occur in Debug mode, because the debuggable attribute will be set to 'true` in release version, so this will not happen.
经过排查, 应该是该文件的名字不符合 UTF-8 编码,此崩溃仅在 debug 模式下会出现,如果是 release 版本,打包时会被设置 debuggable=false ,所以不会出现此情况。
在开发阶段可以删除有问题的文件。不会影响线上使用,请知悉。
参看:
Reactions are currently unavailable