У меня родной сбой:
A/libc: invalid address or address of corrupt block 0x55766f1b00 passed to try_realloc_chunk
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xdeadbaad in tid 32219 (onPool-worker-1)
при выполнении строки drawable.draw(canvas)
следующим способом:
fun getBitmapFromResource(context: Context, imageRes: Int, iconSize: Float = CATEGORY_ICON_SIZE): Bitmap? {
val drawable = ContextCompat.getDrawable(context, imageRes)
if (drawable is BitmapDrawable) {
return drawable.bitmap
}
val size = GraphicsUtils.toPx(context, iconSize)
val bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
drawable!!.setBounds(0, 0, canvas.width, canvas.height)
drawable.draw(canvas) // crash!!
return bitmap
}
Drawable является VectorDrawable
реализацией. Я выполняю этот код в фоновом потоке в сопрограмме.
Я добавил vectorDrawables.useSupportLibrary = true
в build.gradle
файл, но это не помогло.
Мне нужен растровый объект, потому что из его ширины и высоты я рисую пользовательскую диаграмму, и мне нужно выполнить вычисления размера там.
У меня было подозрение, что многопоточность может нарушить процесс, поэтому я добавил этот код в раздел runBlocking
(все еще в фоновом потоке) - безрезультатно.
Есть идеи как это исправить?