位图压缩本机崩溃

问题描述

我遇到了崩溃,Logcat显示一个A/DEBUG: Build fingerprint开头的奇怪堆栈跟踪

这是完整的堆栈跟踪。.

--------- beginning of crash
2020-09-23 12:25:03.435 17458-17641/com.project100pi.video.downloader.videodownloader A/libc: Fatal signal 11 (SIGSEGV),code 1 (SEGV_MAPERR),fault addr 0xfffffffc in tid 17641 (arch_disk_io_2),pid 17458 (videodownloader)
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG: Build fingerprint: 'google/sdk_gphone_x86/generic_x86:10/QSR1.190920.001/5891938:user/release-keys'
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG: Revision: '0'
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG: ABI: 'x86'
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG: Timestamp: 2020-09-22 20:41:36+0530
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG: pid: 9985,tid: 10127,name: arch_disk_io_3  >>> com.project100pi.video.downloader.videodownloader <<<
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG: uid: 10141
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG: signal 11 (SIGSEGV),fault addr 0xb6aa1660
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG:     eax 43c7cfb0  ebx e66e4564  ecx 70690e34  edx 00000000
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG:     edi e5bed140  esi b6aa1660
2020-09-22 20:41:37.006 10143-10143/? A/DEBUG:     ebp b1846898  esp b18467c0  eip e665195f
2020-09-22 20:41:37.461 10143-10143/? A/DEBUG: backtrace:
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #00 pc 0014f95f  /system/lib/libandroid_runtime.so (Bitmap_compress(_jnienv*,_jobject*,long long,int,_jbyteArray*)+63) (BuildId: 6ceb9761bceb97a18c92f8a4b7072247)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #01 pc 002b193e  /system/framework/x86/boot-framework.oat (art_jni_trampoline+238) (BuildId: ff6ec03dd8445d20788424c92ba8ea28ad0f54f4)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #02 pc 0013e9a2  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_static_stub+418) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #03 pc 00149a7a  /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*,unsigned int*,unsigned int,art::JValue*,char const*)+298) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #04 pc 00332502  /apex/com.android.runtime/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*,art::ArtMethod*,art::ShadowFrame*,unsigned short,art::JValue*)+386) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #05 pc 0032d3df  /apex/com.android.runtime/lib/libart.so (bool art::interpreter::DoCall<true,false>(art::ArtMethod*,art::Thread*,art::ShadowFrame&,art::Instruction const*,art::JValue*)+719) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #06 pc 0068870f  /apex/com.android.runtime/lib/libart.so (MterpInvokeStaticRange+495) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #07 pc 00138ca1  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_static_range+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #08 pc 0036949e  /system/framework/framework.jar (android.graphics.Bitmap.compress+70)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #09 pc 00681adc  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtual+1612) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.462 10143-10143/? A/DEBUG:       #10 pc 00138821  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #11 pc 000a7e88  [anon:dalvik-classes2.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk!classes2.dex] (com.pilabs.pivideodownloader.utils.RoomVideoConverter.fromBitmapToBase64+28)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #12 pc 00681adc  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtual+1612) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #13 pc 00138821  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #14 pc 000854b6  [anon:dalvik-classes2.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk!classes2.dex] (com.pilabs.pivideodownloader.data.dao.VideoProgressDao_Impl$3.bind+374)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #15 pc 00681adc  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtual+1612) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #16 pc 00138821  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #17 pc 00085548  [anon:dalvik-classes2.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk!classes2.dex] (com.pilabs.pivideodownloader.data.dao.VideoProgressDao_Impl$3.bind+4)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #18 pc 00681adc  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtual+1612) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #19 pc 00138821  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #20 pc 002cbcec  [anon:dalvik-classes.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk] (androidx.room.EntityDeletionorUpdateAdapter.handle+8)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #21 pc 00681adc  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtual+1612) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #22 pc 00138821  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #23 pc 0008565e  [anon:dalvik-classes2.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk!classes2.dex] (com.pilabs.pivideodownloader.data.dao.VideoProgressDao_Impl$5.call+34)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #24 pc 00681adc  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtual+1612) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #25 pc 00138821  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #26 pc 00085620  [anon:dalvik-classes2.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk!classes2.dex] (com.pilabs.pivideodownloader.data.dao.VideoProgressDao_Impl$5.call)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #27 pc 006837bc  /apex/com.android.runtime/lib/libart.so (MterpInvokeInterface+1980) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #28 pc 00138a21  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_interface+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #29 pc 002cb84c  [anon:dalvik-classes.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk] (androidx.room.CoroutinesRoom$Companion$execute$2.invokeSuspend+28)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #30 pc 00681adc  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtual+1612) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #31 pc 00138821  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #32 pc 001a62b8  [anon:dalvik-classes3.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk!classes3.dex] (kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith+44)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #33 pc 006837bc  /apex/com.android.runtime/lib/libart.so (MterpInvokeInterface+1980) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #34 pc 00138a21  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_interface+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #35 pc 001d9492  [anon:dalvik-classes3.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk!classes3.dex] (kotlinx.coroutines.dispatchedTask.run+334)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #36 pc 006837bc  /apex/com.android.runtime/lib/libart.so (MterpInvokeInterface+1980) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #37 pc 00138a21  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_interface+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #38 pc 002d0d04  [anon:dalvik-classes.dex extracted in memory from /data/app/com.project100pi.video.downloader.videodownloader-ZrVxAumSEH6l_GSdptEkIw==/base.apk] (androidx.room.TransactionExecutor$1.run+4)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #39 pc 006837bc  /apex/com.android.runtime/lib/libart.so (MterpInvokeInterface+1980) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.463 10143-10143/? A/DEBUG:       #40 pc 00138a21  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_interface+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.464 10143-10143/? A/DEBUG:       #41 pc 001f7fb2  /apex/com.android.runtime/javalib/core-oj.jar (java.util.concurrent.ThreadPoolExecutor.runWorker+158)
2020-09-22 20:41:37.464 10143-10143/? A/DEBUG:       #42 pc 00681adc  /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtual+1612) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.464 10143-10143/? A/DEBUG:       #43 pc 00138821  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.475 10143-10143/? A/DEBUG:       #44 pc 001f6d60  /apex/com.android.runtime/javalib/core-oj.jar (java.util.concurrent.ThreadPoolExecutor$Worker.run+4)
2020-09-22 20:41:37.485 10143-10143/? A/DEBUG:       #45 pc 006837bc  /apex/com.android.runtime/lib/libart.so (MterpInvokeInterface+1980) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.485 10143-10143/? A/DEBUG:       #46 pc 00138a21  /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_interface+33) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.485 10143-10143/? A/DEBUG:       #47 pc 000ea918  /apex/com.android.runtime/javalib/core-oj.jar (java.lang.Thread.run+8)
2020-09-22 20:41:37.485 10143-10143/? A/DEBUG:       #48 pc 002f8e0a  /apex/com.android.runtime/lib/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEbb.llvm.12194892193087984976+298) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.485 10143-10143/? A/DEBUG:       #49 pc 002ffcc5  /apex/com.android.runtime/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*,art::CodeItemDataAccessor const&,art::ShadowFrame*)+181) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.485 10143-10143/? A/DEBUG:       #50 pc 0066fbd9  /apex/com.android.runtime/lib/libart.so (artQuickToInterpreterBridge+1209) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.486 10143-10143/? A/DEBUG:       #51 pc 0014503d  /apex/com.android.runtime/lib/libart.so (art_quick_to_interpreter_bridge+77) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.486 10143-10143/? A/DEBUG:       #52 pc 0013e7d2  /apex/com.android.runtime/lib/libart.so (art_quick_invoke_stub+338) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.486 10143-10143/? A/DEBUG:       #53 pc 00149a69  /apex/com.android.runtime/lib/libart.so (art::ArtMethod::Invoke(art::Thread*,char const*)+281) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.486 10143-10143/? A/DEBUG:       #54 pc 0055a513  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedobjectAccessAlreadyRunnable const&,art::(anonymous namespace)::ArgArray*,char const*)+99) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.486 10143-10143/? A/DEBUG:       #55 pc 0055b91a  /apex/com.android.runtime/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedobjectAccessAlreadyRunnable const&,_jmethodID*,jvalue const*)+474) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.486 10143-10143/? A/DEBUG:       #56 pc 005aaa51  /apex/com.android.runtime/lib/libart.so (art::Thread::CreateCallback(void*)+1585) (BuildId: 895645e5113da057f27d9b2ec11eb3bf)
2020-09-22 20:41:37.486 10143-10143/? A/DEBUG:       #57 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53) (BuildId: 76290498408016ad14f4b98c3ab6c65c)
2020-09-22 20:41:37.486 10143-10143/? A/DEBUG:       #58 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71) (BuildId: 76290498408016ad14f4b98c3ab6c65c)
2020-09-22 20:41:38.729 1824-1824/? E//system/bin/tombstoned: Tombstone written to:/data/tombstones/tombstone_04

通过查看,我可以说问题出在RoomVideoConverter.fromBitmapToBase

这是RoomVideoConverter

代码
class RoomVideoConverter {

@TypeConverter
fun fromBase64ToBitmap(base64Value: String): Bitmap? {
    val decodedBytes: ByteArray = Base64.decode(base64Value,0)
    return BitmapFactory.decodeByteArray(decodedBytes,decodedBytes.size)
}

@TypeConverter
fun fromBitmapToBase64(bitmap: Bitmap?): String {
    val byteArrayOS = ByteArrayOutputStream()
    bitmap?.compress(Bitmap.CompressFormat.PNG,25,byteArrayOS)
    return Base64.encodetoString(byteArrayOS.toByteArray(),Base64.DEFAULT)
}
}

RoomDatabase在这里

    @Database(entities = [VideoInfo::class,Link::class],version = 1,exportSchema = false)
    @TypeConverters(RoomVideoConverter::class)
    abstract class  AppDatabase : RoomDatabase() {

    abstract fun videoProgressDao() : VideoProgressDao

   }

我正在使用TypeConverter将位图转换为Base64字符串以将其存储到数据库表中。

注意::我正在使用WorkManager从网络下载视频,并且数据库交易发生在doWork()的{​​{1}}中。现在,当我下载1个视频时,不会崩溃,而同时下载多个视频时,只会崩溃。这可能是CoroutineWorker的问题吗?如果是这样,如何使TypeConverter线程安全以避免崩溃?

有人可以帮我吗?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)