Open gemiren opened 6 years ago
Thanks for the report, let me know if you find a way to reproduce this.
Are you using any custom ModelLoaders or other components? Any custom executors?
Hello guys, I can see a lot of crashes with this error on my app. Can you help me with that? Glide Version: 4.8.0 Integration libraries: okhttp3-integration Device/Android Version: Various devices and Android versions. Glide load line:
GlideApp.with...
Here's stacktrace
Fatal Exception: java.lang.NullPointerException
Attempt to invoke direct method 'int com.bumptech.glide.load.b.g.h()' on a null object reference
com.bumptech.glide.load.engine.DecodeJob.compareTo (DecodeJob.java:200)
com.bumptech.glide.load.engine.DecodeJob.compareTo (DecodeJob.java:38)
java.util.concurrent.PriorityBlockingQueue.siftUpComparable (PriorityBlockingQueue.java:360)
java.util.concurrent.ThreadPoolExecutor.execute (ThreadPoolExecutor.java:1381)
com.bumptech.glide.load.engine.executor.GlideExecutor.execute (GlideExecutor.java:268)
com.bumptech.glide.load.engine.EngineJob.reschedule (EngineJob.java:273)
com.bumptech.glide.load.engine.DecodeJob.reschedule (DecodeJob.java:362)
com.bumptech.glide.load.engine.SourceGenerator.onDataReady (SourceGenerator.java:110)
com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher.onResponse (OkHttpStreamFetcher.java:71)
And I also see a similar stacktrace, but there NPE happens inside a call to getPriority of a DecodeJob object.
Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'int com.bumptech.glide.i.ordinal()' on a null object reference
com.bumptech.glide.load.engine.DecodeJob.getPriority (DecodeJob.java:208)
com.bumptech.glide.load.engine.DecodeJob.compareTo (DecodeJob.java:200)
com.bumptech.glide.load.engine.DecodeJob.compareTo (DecodeJob.java:38)
java.util.concurrent.PriorityBlockingQueue.siftUpComparable (PriorityBlockingQueue.java:322)
java.util.concurrent.ThreadPoolExecutor.execute (ThreadPoolExecutor.java:1332)
com.bumptech.glide.load.engine.executor.GlideExecutor.execute (GlideExecutor.java:268)
GlideModule (if any): I do have a custom glide module class.
@GlideModule
class CustomAppGlideModule : AppGlideModule() {
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
super.registerComponents(context, glide, registry)
registerProgressListener(registry)
registerGifDecoders(glide, registry)
registerLottieThumbnailDecoders(glide, registry)
}
private fun registerGifDecoders(glide: Glide, registry: Registry) {
val koralFileGifDecoder = KoralFileGifDecoder(registry.imageHeaderParsers, glide.arrayPool)
registry.prepend(Registry.BUCKET_GIF, File::class.java, AppGifDrawable::class.java, koralFileGifDecoder)
}
private fun registerLottieThumbnailDecoders(glide: Glide, registry: Registry) {
registry
.append(
LottieThumbnail::class.java,
LottieCompositionPreview::class.java,
LottieCompositionLoader.Factory(glide.context)
)
.append(
LottieCompositionPreview::class.java,
Bitmap::class.java,
LottieBitmapDecoder(glide.context, glide.bitmapPool)
)
}
private fun registerProgressListener(registry: Registry) {
val client = OkHttpClient.Builder()
.callTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.addNetworkInterceptor { chain ->
val request = chain.request()
val response = chain.proceed(request)
val listener = DispatchingProgressListener()
response.newBuilder()
.body(
OkHttpProgressResponseBody(
request.url(),
response.body()!!,
listener
)
)
.build()
}
.build()
registry.replace(GlideUrl::class.java, InputStream::class.java, OkHttpUrlLoader.Factory(client))
}
}
@sjudd Sorry for bothering, can you give me a hint, so I can continue investigating myself?
For those who will have the same issue, I fixed it. Now I don't see this crashes in crashlytics.
After reading the discussion of the following issue https://github.com/bumptech/glide/issues/2204 I changed a bit implementation of my custom DataFetcher class.
It used to call an async func in loadData
and cancel
method was not implemented.
I changed it to sync and not calling onDataReady
or onDataFailed
if cancel
was called before.
This is a bug reported by users. Seems to be a random bug so far. I wasn't be able to get the bug reproduced yet. However, I get couple of bug reports on Firebase crash report every day. So I think it is worth to report the bug here and hopefully a fix soon. Thanks.
Glide Version: 4.3.1
Integration libraries: Android Architecture Components v1.0.0
Device/Android Version: Various devices and Android versions.
Issue details / Repro steps / Use case background:
Glide load line /
GlideModule
(if any) / list Adapter code (if any):Layout XML:
Stack trace / LogCat: