libpag
libpag copied to clipboard
iOS crash 反馈
【版本信息】
4.2.100
【平台信息】
iOS 原生
【预期的表现】
目前我们收集到两类 crash 堆栈,iOS 15、16、17 等都有上报
堆栈1
void* std::__1::__thread_proxy[abi:v15006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(tgfx::TaskGroup*), tgfx::TaskGroup*>>(void*) (in libpag) (thread:303)
tgfx::TaskGroup::RunLoop(tgfx::TaskGroup*) (in libpag) (TaskGroup.cpp:57)
tgfx::Task::execute() (in libpag) (Task.cpp:92)
std::__1::__function::__func<tgfx::ImageGeneratorTask::ImageGeneratorTask(std::__1::shared_ptr<tgfx::ImageGenerator>, bool)::$_0, std::__1::allocator<tgfx::ImageGeneratorTask::ImageGeneratorTask(std::__1::shared_ptr<tgfx::ImageGenerator>, bool)::$_0>, void ()>::operator()() (in libpag) (function.h:359)
pag::SequenceReader::readBuffer(long long) (in libpag) (SequenceReader.cpp:29)
pag::VideoReader::onMakeBuffer(long long) (in libpag) (VideoReader.cpp:60)
pag::VideoReader::decodeFrame(long long) (in libpag) (VideoReader.cpp:140)
pag::HardwareDecoder::onDecodeFrame() (in libpag) (HardwareDecoder.mm:0)
堆栈2
pag::PAGSurface::freeCache() (in libpag) (PAGSurface.cpp:56)
pag::PAGSurface::onFreeCache() (in libpag) (PAGSurface.cpp:63)
pag::RenderCache::releaseAll() (in libpag) (RenderCache.cpp:0)
pag::RenderCache::clearAllSequenceCaches() (in libpag) (RenderCache.cpp:597)
std::__1::shared_ptr<pag::SequenceReader>::~shared_ptr[abi:v15006]() (in libpag) (shared_ptr.h:702)
pag::VideoReader::~VideoReader() (in libpag) (VideoReader.cpp:43)
pag::VideoReader::destroyVideoDecoder() (in libpag) (VideoReader.cpp:174)
pag::HardwareDecoder::~HardwareDecoder() (in libpag) (HardwareDecoder.mm:32)
pag::HardwareDecoder::~HardwareDecoder() (in libpag) (HardwareDecoder.mm:35)
我们 APP 的堆栈还出现了 handlerMemoryWarning
,我们在收到 OOM 后会调用 SDK freeCache
方法
- 请问这样使用是否有问题?
- 是否有需要先调用
stop
再调用freeCache
?
@objc private func handlerMemoryWarning() {
// 收到 OOM
freeCache()
}