We use Fresco in our app and notice a lot of crashes in our production app related to SoLoader, mostly on Samsung devices running Android 12.
Here's the crash report:
Fatal Exception: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libgifimage.so caused by: dlopen failed: cannot find "" from verneed[0] in DT_NEEDED list for "/data/user/0/com.app.androif/lib-main/libgifimage.so" result: 0
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:896)
at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:725)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:649)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:629)
at com.facebook.soloader.NativeLoaderToSoLoaderDelegate.loadLibrary(NativeLoaderToSoLoaderDelegate.java:29)
at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary(NativeLoader.java:51)
at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary(NativeLoader.java:30)
at com.facebook.animated.gif.GifImage.ensure(GifImage.java:44)
at com.facebook.animated.gif.GifImage.createFromByteBuffer(GifImage.java:81)
at com.facebook.animated.gif.GifImage.decodeFromByteBuffer(GifImage.java:117)
at com.facebook.imagepipeline.animated.factory.AnimatedImageFactoryImpl.decodeGif(AnimatedImageFactoryImpl.java:85)
at com.facebook.fresco.animation.factory.AnimatedFactoryV2Impl$1.decode(AnimatedFactoryV2Impl.java:90)
at com.facebook.imagepipeline.decoder.DefaultImageDecoder.decodeGif(DefaultImageDecoder.java:139)
at com.facebook.imagepipeline.decoder.DefaultImageDecoder$1.decode(DefaultImageDecoder.java:60)
at com.facebook.imagepipeline.decoder.DefaultImageDecoder.decode(DefaultImageDecoder.java:120)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.internalDecode(DecodeProducer.java:386)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.doDecode(DecodeProducer.java:328)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.access$400(DecodeProducer.java:145)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder$1.run(DecodeProducer.java:198)
at com.facebook.imagepipeline.producers.JobScheduler.doJob(JobScheduler.java:224)
at com.facebook.imagepipeline.producers.JobScheduler.access$000(JobScheduler.java:24)
at com.facebook.imagepipeline.producers.JobScheduler$1.run(JobScheduler.java:90)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:52)
at java.lang.Thread.run(Thread.java:1012)
In case it helps, here's another report that looks related to the previous but with no mention of SoLoader:
Fatal Exception: java.lang.UnsatisfiedLinkError: No implementation found for com.facebook.animated.gif.GifImage com.facebook.animated.gif.GifImage.nativeCreateFromDirectByteBuffer(java.nio.ByteBuffer, int, boolean) (tried Java_com_facebook_animated_gif_GifImage_nativeCreateFromDirectByteBuffer and Java_com_facebook_animated_gif_GifImage_nativeCreateFromDirectByteBuffer__Ljava_nio_ByteBuffer_2IZ)
at com.facebook.animated.gif.GifImage.nativeCreateFromDirectByteBuffer(GifImage.java)
at com.facebook.animated.gif.GifImage.createFromByteBuffer(GifImage.java:84)
at com.facebook.animated.gif.GifImage.decodeFromByteBuffer(GifImage.java:117)
at com.facebook.imagepipeline.animated.factory.AnimatedImageFactoryImpl.decodeGif(AnimatedImageFactoryImpl.java:85)
at com.facebook.fresco.animation.factory.AnimatedFactoryV2Impl$1.decode(AnimatedFactoryV2Impl.java:90)
at com.facebook.imagepipeline.decoder.DefaultImageDecoder.decodeGif(DefaultImageDecoder.java:139)
at com.facebook.imagepipeline.decoder.DefaultImageDecoder$1.decode(DefaultImageDecoder.java:60)
at com.facebook.imagepipeline.decoder.DefaultImageDecoder.decode(DefaultImageDecoder.java:120)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.internalDecode(DecodeProducer.java:386)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.doDecode(DecodeProducer.java:328)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.access$400(DecodeProducer.java:145)
at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder$1.run(DecodeProducer.java:198)
at com.facebook.imagepipeline.producers.JobScheduler.doJob(JobScheduler.java:224)
at com.facebook.imagepipeline.producers.JobScheduler.access$000(JobScheduler.java:24)
at com.facebook.imagepipeline.producers.JobScheduler$1.run(JobScheduler.java:90)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:52)
at java.lang.Thread.run(Thread.java:1012)
Hi,
We use Fresco in our app and notice a lot of crashes in our production app related to SoLoader, mostly on Samsung devices running Android 12.
Here's the crash report:
In case it helps, here's another report that looks related to the previous but with no mention of SoLoader:
Here are the version of the libs that we use:
com.facebook.fresco:fresco = 2.4.0 com.facebook.fresco:animated-gif = 2.4.0 com.facebook.fresco:imagepipeline-okhttp3 = 2.4.0 jp.wasabeef:fresco-processors = 2.1.0 com.facebook.fresco:webpsupport = 2.4.0
We've also recently force updated SoLoader that's used by Fresco in order to avoid the common crash in Android 12:
None of it seemed to have help though. Any idea what the cause might be?