Skip to content

Android: (Rare) ANR when using ImageFactory.compress()  #335

@hansemannn

Description

@hansemannn

In some cases, the compress-API can cause an ANR due to draining memory. The solution should be to either make it fully async (via background thread) or use a different, more stable, compression algorithm. Maybe there are advancements in the Android world since the initial release.

Maybe use Compressor for all compression-related tasks?

ANR log:

main (native):tid=1 systid=10769 
#00 pc 0x86b8c libc.so (syscall + 28)
#01 pc 0x1b092c libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*) + 148)
#02 pc 0x3f8964 libart.so (art::JNI<false>::SetByteArrayRegion(_JNIEnv*, _jbyteArray*, int, int, signed char const*) + 504)
#03 pc 0x3410c0 libhwui.so (SkJavaOutputStream::write(void const*, unsigned long) + 92)
#04 pc 0x55825c libhwui.so (sk_empty_output_buffer(jpeg_compress_struct*) (.llvm.15802703823201869038) + 48)
#05 pc 0x12ac8 libjpeg.so (encode_mcu_huff + 820)
#06 pc 0xdcc0 libjpeg.so (compress_output + 504)
#07 pc 0xb2dc libjpeg.so (jpeg_finish_compress + 312)
#08 pc 0x558e7c libhwui.so (SkJpegEncoder::onEncodeRows(int) + 296)
#09 pc 0x558fa4 libhwui.so (SkJpegEncoder::Encode(SkWStream*, SkPixmap const&, SkJpegEncoder::Options const&) + 112)
#10 pc 0x557ef8 libhwui.so (SkEncodeImage(SkWStream*, SkPixmap const&, SkEncodedImageFormat, int) + 64)
#11 pc 0x36375c libhwui.so (android::Bitmap::compress(SkBitmap const&, android::Bitmap::JavaCompressFormat, int, SkWStream*) + 292)
#12 pc 0x3635a8 libhwui.so (android::Bitmap::compress(android::Bitmap::JavaCompressFormat, int, SkWStream*) + 84)
#13 pc 0x338728 libhwui.so (Bitmap_compress(_JNIEnv*, _jobject*, long, int, int, _jobject*, _jbyteArray*) + 136)
       at android.graphics.Bitmap.nativeCompress(Native method)
       at android.graphics.Bitmap.compress(Bitmap.java:1779)
       at ti.imagefactory.ImageFactoryModule.compress(ImageFactoryModule.java:316)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions