Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mark has been invalidated, pos: 65536 markLimit: 65536 #2510

Closed
zjupure opened this issue Oct 24, 2017 · 5 comments
Closed

Mark has been invalidated, pos: 65536 markLimit: 65536 #2510

zjupure opened this issue Oct 24, 2017 · 5 comments

Comments

@zjupure
Copy link

zjupure commented Oct 24, 2017

Glide Version: 4.2

Integration libraries: No

Device/Android Version: HUAWEI H30-T00, Android 4.2.2, API 17

Issue details / Repro steps / Use case background:
I want to write a glide webp support integration for our app to display animated webp image with libwebp, but when I want to load some anim webp samples, it will throw "com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream$InvalidMarkException: Mark has been invalidated, pos: 65536 markLimit: 65536" in some internal decodes, so the later decoder will failed due to the inputstream has been broken.

Use the https://www.gstatic.com/webp/animated/1.webp can produce this problem. some 5.0 device work fine, but this device throw exception.

Glide load line / GlideModule (if any) / list Adapter code (if any):

GlideApp.with(mContext)
                .load(“https://www.gstatic.com/webp/animated/1.webp”)
                .placeholder(R.drawable.image_loading)
                .error(R.drawable.image_error)
                .into(imageView);

Stack trace / LogCat:

10-24 14:55:55.844 8409-8442/com.bumptech.glide.samples.webp E/GlideExecutor: Request threw uncaught throwable
                                                                              java.lang.IllegalArgumentException: Fetchers don't match!, old: com.bumptech.glide.load.model.FileLoader$FileFetcher@41fd2260 new: com.bumptech.glide.load.model.FileLoader$FileFetcher@41fdcc00
                                                                                  at com.bumptech.glide.util.Preconditions.checkArgument(Preconditions.java:17)
                                                                                  at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:245)
                                                                                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
                                                                                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
                                                                                  at java.lang.Thread.run(Thread.java:838)
                                                                                  at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413)
10-24 14:55:55.850 8409-8409/com.bumptech.glide.samples.webp W/Glide: Load failed for https://www.gstatic.com/webp/animated/1.webp with size [300x300]
                                                                      class com.bumptech.glide.load.engine.GlideException: Failed to load resource
                                                                        Cause (1 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{MappedByteBufferAdapter->Object->Drawable}, DATA_DISK_CACHE, https://www.gstatic.com/webp/animated/1.webp
                                                                          Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{MappedByteBufferAdapter->GifDrawable->Drawable}
                                                                          Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{MappedByteBufferAdapter->Bitmap->Drawable}
                                                                          Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{MappedByteBufferAdapter->BitmapDrawable->Drawable}
                                                                        Cause (2 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{FileInputStream->Object->Drawable}, DATA_DISK_CACHE, https://www.gstatic.com/webp/animated/1.webp
                                                                          Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->GifDrawable->Drawable}
                                                                          Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->Bitmap->Drawable}
                                                                          Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->BitmapDrawable->Drawable}
                                                                            Cause (1 of 1): class com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream$InvalidMarkException: Mark has been invalidated, pos: 65536 markLimit: 65536
                                                                        Cause (3 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ParcelFileDescriptor->Object->Drawable}, DATA_DISK_CACHE, https://www.gstatic.com/webp/animated/1.webp
                                                                          Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->Bitmap->Drawable}
                                                                            Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->BitmapDrawable->Drawable}
                                                                            Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                        Cause (4 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{MappedByteBufferAdapter->Object->Drawable}, REMOTE, https://www.gstatic.com/webp/animated/1.webp
                                                                          Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{MappedByteBufferAdapter->GifDrawable->Drawable}
                                                                          Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{MappedByteBufferAdapter->Bitmap->Drawable}
                                                                          Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{MappedByteBufferAdapter->BitmapDrawable->Drawable}
                                                                        Cause (5 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{FileInputStream->Object->Drawable}, REMOTE, https://www.gstatic.com/webp/animated/1.webp
                                                                          Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->GifDrawable->Drawable}
                                                                          Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->Bitmap->Drawable}
                                                                          Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->BitmapDrawable->Drawable}
                                                                            Cause (1 of 1): class com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream$InvalidMarkException: Mark has been invalidated, pos: 65536 markLimit: 65536
                                                                        Cause (6 of 6): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ParcelFileDescriptor->Object->Drawable}, REMOTE, https://www.gstatic.com/webp/animated/1.webp
                                                                          Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->Bitmap->Drawable}
                                                                            Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed D
10-24 14:55:55.853 8409-8409/com.bumptech.glide.samples.webp I/Glide: Root cause (1 of 6)
                                                                      com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream$InvalidMarkException: Mark has been invalidated, pos: 65536 markLimit: 65536
                                                                          at com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream.reset(RecyclableBufferedInputStream.java:349)
                                                                          at com.bumptech.glide.load.data.InputStreamRewinder.rewindAndGet(InputStreamRewinder.java:25)
                                                                          at com.bumptech.glide.load.data.InputStreamRewinder.rewindAndGet(InputStreamRewinder.java:12)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:64)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43)
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56)
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:260)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230)
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
                                                                          at java.lang.Thread.run(Thread.java:838)
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413)
10-24 14:55:55.859 8409-8409/com.bumptech.glide.samples.webp I/Glide: Root cause (2 of 6)
                                                                      java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:133)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:24)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:67)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43)
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56)
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:260)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230)
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
                                                                          at java.lang.Thread.run(Thread.java:838)
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413)
                                                                       Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          at android.media.MediaMetadataRetriever.setDataSource(Native Method)
                                                                          at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:140)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:123)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:24) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:67) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43) 
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56) 
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:260) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230) 
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
                                                                          at java.lang.Thread.run(Thread.java:838) 
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413) 
10-24 14:55:55.863 8409-8409/com.bumptech.glide.samples.webp I/Glide: Root cause (3 of 6)
                                                                      java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:133)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:24)
                                                                          at com.bumptech.glide.load.resource.bitmap.BitmapDrawableDecoder.decode(BitmapDrawableDecoder.java:45)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:67)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43)
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56)
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:260)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230)
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
                                                                          at java.lang.Thread.run(Thread.java:838)
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413)
                                                                       Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          at android.media.MediaMetadataRetriever.setDataSource(Native Method)
                                                                          at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:140)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:123)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:24) 
                                                                          at com.bumptech.glide.load.resource.bitmap.BitmapDrawableDecoder.decode(BitmapDrawableDecoder.java:45) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:67) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43) 
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56) 
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:260) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230) 
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
                                                                          at java.lang.Thread.run(Thread.java:838) 
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413) 
10-24 14:55:55.866 8409-8409/com.bumptech.glide.samples.webp I/Glide: Root cause (4 of 6)
                                                                      com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream$InvalidMarkException: Mark has been invalidated, pos: 65536 markLimit: 65536
                                                                          at com.bumptech.glide.load.resource.bitmap.RecyclableBufferedInputStream.reset(RecyclableBufferedInputStream.java:349)
                                                                          at com.bumptech.glide.load.data.InputStreamRewinder.rewindAndGet(InputStreamRewinder.java:25)
                                                                          at com.bumptech.glide.load.data.InputStreamRewinder.rewindAndGet(InputStreamRewinder.java:12)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:64)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43)
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56)
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:263)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230)
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
                                                                          at java.lang.Thread.run(Thread.java:838)
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413)
10-24 14:55:55.871 8409-8409/com.bumptech.glide.samples.webp I/Glide: Root cause (5 of 6)
                                                                      java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:133)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:24)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:67)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43)
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56)
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:263)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230)
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
                                                                          at java.lang.Thread.run(Thread.java:838)
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413)
                                                                       Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          at android.media.MediaMetadataRetriever.setDataSource(Native Method)
                                                                          at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:140)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:123)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:24) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:67) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43) 
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56) 
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:263) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230) 
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
                                                                          at java.lang.Thread.run(Thread.java:838) 
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413) 
10-24 14:55:55.878 8409-8409/com.bumptech.glide.samples.webp I/Glide: Root cause (6 of 6)
                                                                      java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:133)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:24)
                                                                          at com.bumptech.glide.load.resource.bitmap.BitmapDrawableDecoder.decode(BitmapDrawableDecoder.java:45)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:67)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52)
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43)
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56)
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91)
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69)
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71)
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:263)
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230)
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
                                                                          at java.lang.Thread.run(Thread.java:838)
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413)
                                                                       Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
                                                                          at android.media.MediaMetadataRetriever.setDataSource(Native Method)
                                                                          at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:140)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:123)
                                                                          at com.bumptech.glide.load.resource.bitmap.VideoBitmapDecoder.decode(VideoBitmapDecoder.java:24) 
                                                                          at com.bumptech.glide.load.resource.bitmap.BitmapDrawableDecoder.decode(BitmapDrawableDecoder.java:45) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:67) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:52) 
                                                                          at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:43) 
                                                                          at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:56) 
                                                                          at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:42) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:489) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:461) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:447) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:401) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.FileLoader$FileFetcher.loadData(FileLoader.java:74) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:409) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:370) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.onDataFetcherReady(SourceGenerator.java:134) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.onDataReady(DataCacheGenerator.java:91) 
                                                                          at com.bumptech.glide.load.model.ByteBufferFileLoader$ByteBufferFetcher.loadData(ByteBufferFileLoader.java:69) 
                                                                          at com.bumptech.glide.load.engine.DataCacheGenerator.startNext(DataCacheGenerator.java:71) 
                                                                          at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:48) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:293) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:263) 
                                                                          at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:230) 
                                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
                                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
                                                                          at java.lang.Thread.run(Thread.java:838) 
                                                                          at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:413) 
@sjudd
Copy link
Collaborator

sjudd commented Oct 26, 2017

That can happen if a decoder either reads too far into the stream in the handles() method. It an also happen if a decoder returns true from handles(), reads more than the available bytes in it's decode method and still fails decode a resource.

@sjudd sjudd added the question label Oct 26, 2017
@zjupure
Copy link
Author

zjupure commented Oct 27, 2017

@sjudd it is caused by the glide build-in decoders. After a debug trace, I find the owner is StreamBitmapDecoder. its handles() method always return true whatever the source data can be hanldes by the StreamBitmapDecoder or not. Then its decode() method will consume the inputstream until the limit and throw error. The inputstream is broken and cannot be reset, so all the subsequent decoders will decode failed even they can really handle the source.

I am a little confused about the design in StreamBitmapDecoder and Downsampler, can we distinguish the image type and return the correct value according the image type? Why the Downsampler handles() always true? As I know, Downsampler use the Android framework BitmapFactory.decodeStream() to decode the image source, it can only handle JPEG, PNG, GIF( static frame), static WEBP. so it shoud not handle other image types that are not supported by Android framework such as animated webp, APNG, or some costume image type. A decoder consuming the stream that can not be decoded by itself is a terrible design. It might be a bug.

In addition, I have another question. The ImageType declared in ImageHeaderParser is an enum type, so we cannot extend the image type and add some custom image types that not preddefined in Glide?
ImageHeaderParser is an interface and we can implement an addtional ImageHeaderParser and add it into Glide.registry. But when I override the getType() method in ImageHeaderParser, we can only return the predefined image type but it is not we expected. So declaring the ImageType to a class may be a good chooice and make it more flexiable and expandable.

@sjudd
Copy link
Collaborator

sjudd commented Oct 27, 2017

Probably you just want prepend(). Downsampler is meant to be a fallback. Unfortunately keeping track of the various image types and variants supported by the framework across all of the versions of Android we support is a challenge. prepend() lets you select a decoder for a particular image type (or even a particular image) but still fall back to Glide's defaults in all other cases.

ImageHeaderParser is a bit of a compromise. It's particular to Downsampler, but we have a weird case where we need to decode the orientation of one additional type. It really isn't much of a public API.

Let me know if prepend doesn't work for you. See also: http://bumptech.github.io/glide/doc/configuration.html#ordering-components

@stale
Copy link

stale bot commented Nov 11, 2017

This issue has been automatically marked as stale because it has not had activity in the last seven days. It will be closed if no further activity occurs within the next seven days. Thank you for your contributions.

@stale stale bot added the stale label Nov 11, 2017
@stale stale bot closed this as completed Nov 18, 2017
@tvhieuit
Copy link

tvhieuit commented Jun 14, 2018

Hello all of you!

I meet same this issue with my image size is ~7.8MB

Gilde v4.7.1

Glide.with(context)
        .load(url)
        .apply(
                RequestOptions()
                        .format(DecodeFormat.PREFER_RGB_565)
                        .timeout(REQUEST_TIME_OUT)
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
        ).into(imageView)

Could you help me
Thank so much.

screen shot 2018-06-14 at 4 55 35 pm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants