SDWebImage / SDWebImageAVIFCoder

A SDWebImage coder plugin to support AVIF(AV1 Image File Format) image
MIT License
55 stars 14 forks source link

Crash: while loading avif #48

Closed ZhangJianian closed 1 year ago

ZhangJianian commented 1 year ago

Issue Info

Info Value
Platform Name iOS
Platform Version All
Repro rate sometimes
Integration Method cocoapods
SDWebImageAVIFCoder Version 0.9.2

Issue Description and Steps

Here's the full stack trace of the crash:

1 libsystem_kernel.dylib __pthread_kill (in libsystem_kernel.dylib) + 8 2 libsystem_pthread.dylib pthread_kill (in libsystem_pthread.dylib) + 208 3 libsystem_c.dylib abort (in libsystem_c.dylib) + 124 4 QuartzCore CA::Render::Encoder::grow(unsigned long) (in QuartzCore) + 236 5 QuartzCore CA::Render::Vector::encode(CA::Render::Encoder) const (in QuartzCore) + 108 6 QuartzCore CA::Render::Array::encode(CA::Render::Encoder) const (in QuartzCore) + 164 7 QuartzCore CA::Render::KeyframeAnimation::encode(CA::Render::Encoder) const (in QuartzCore) + 40 8 QuartzCore CA::Context::commit_animation(CA::Layer, CA::Render::Animation, void) (in QuartzCore) + 232 9 QuartzCore CA::Layer::commit_animations(CA::Transaction, double ()(CA::Layer, double, void), void ()(CA::Layer, CA::Render::Animation, void), void ()(CA::Layer, CFString const, void), CA::Render::TimingList ()(CA::Layer, void), void) (in QuartzCore) + 984 10 QuartzCore invocation function for block in CA::Context::commit_transaction(CA::Transaction, double, double) (in QuartzCore) + 184 11 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 388 12 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 13 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 14 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 15 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 16 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 17 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 18 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 19 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 20 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 21 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 22 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 23 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 24 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 25 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 26 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 27 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 28 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 29 QuartzCore CA::Layer::commit_if_needed(CA::Transaction, void (CA::Layer, unsigned int, unsigned int) block_pointer) (in QuartzCore) + 264 30 QuartzCore CA::Context::commit_transaction(CA::Transaction, double, double*) (in QuartzCore) + 6104 31 QuartzCore CA::Transaction::commit() (in QuartzCore) + 708 32 QuartzCore CA::Transaction::flush_as_runloop_observer(bool) (in QuartzCore) + 84 33 CoreFoundation CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION (in CoreFoundation) + 32 34 CoreFoundation CFRunLoopDoObservers (in CoreFoundation) + 616 35 CoreFoundation __CFRunLoopRun (in CoreFoundation) + 1012 36 CoreFoundation CFRunLoopRunSpecific (in CoreFoundation) + 572 37 GraphicsServices GSEventRunModal (in GraphicsServices) + 160 38 UIKitCore -[UIApplication _run] (in UIKitCore) + 1080 39 UIKitCore UIApplicationMain (in UIKitCore) + 336 40 MyAPp main (in MyAPp) (main.m:15)

dreampiggy commented 1 year ago

You need provide a demo for your code

and also, the demo AVIF image file

for developers to reproduce and investigate the issue.

dreampiggy commented 1 year ago

Likely to be a OOM issue during the Render Screen process.

But however, SDImageAVIFCoder does not use lazy decoding. And don't suppor that now. So I don't think it's related to this repo.