Android平台 PAGDecoder.readFrame 崩溃
【版本信息】
4.4.25
【平台信息】
Android 原生 Android 14 (SDK 34)
机型:samsung a14
系统芯片:Samsung Exynos 850
【预期的表现】
【实际的情况】
google play 捕获到了崩溃
"tgfx_JNIEnvironment" tid=232 Native
#00 pc 0x000000000008ec1c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
#01 pc 0x00000000000935cc /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex+144)
#02 pc 0x00000000000a08ec /apex/com.android.runtime/lib64/bionic/libc.so (sem_wait+108)
#03 pc 0x000000000180f63c /vendor/lib64/egl/libGLES_mali.so (cframep_context_inc_used_resources+36)
#04 pc 0x00000000008779ec /vendor/lib64/egl/libGLES_mali.so (gles_fb_gen_framebuffers+172)
#05 pc 0x0000000000867964 /vendor/lib64/egl/libGLES_mali.so (glGenFramebuffers+56)
#06 pc 0x000000000025f314 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#07 pc 0x00000000002d3808 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#08 pc 0x00000000002da3c4 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#09 pc 0x00000000001ce744 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#10 pc 0x00000000001cce70 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#11 pc 0x00000000002de864 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#12 pc 0x0000000000159f54 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGSurface::draw+576) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#13 pc 0x000000000015837c /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGPlayer::flushInternal+160) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#14 pc 0x00000000001582a0 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGPlayer::flush+88) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#15 pc 0x000000000014e7b8 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#16 pc 0x00000000001559b4 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGDecoder::renderFrame+176) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#17 pc 0x0000000000155494 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGDecoder::readFrameInternal+600) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#18 pc 0x000000000015569c /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGDecoder::readFrame+96) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#19 pc 0x00000000001bbe18 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (Java_org_libpag_PAGDecoder_readFrame+112) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
at org.libpag.PAGDecoder.readFrame (Native method)
at org.libpag.c$a.a (SourceFile:3)
at org.libpag.PAGImageView.a (SourceFile:86)
at org.libpag.PAGImageView.flush (SourceFile:12)
at org.libpag.PAGImageView.onAnimationUpdate (SourceFile:7)
at org.libpag.PAGAnimator.onAnimationUpdate (SourceFile:3)
"tgfx_JNIEnvironment" tid=233 Native
#00 pc 0x000000000008ec1c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
#01 pc 0x00000000000935cc /apex/com.android.runtime/lib64/bionic/libc.so (__futex_wait_ex+144)
#02 pc 0x00000000000a08ec /apex/com.android.runtime/lib64/bionic/libc.so (sem_wait+108)
#03 pc 0x000000000180f63c /vendor/lib64/egl/libGLES_mali.so (cframep_context_inc_used_resources+36)
#04 pc 0x00000000008779ec /vendor/lib64/egl/libGLES_mali.so (gles_fb_gen_framebuffers+172)
#05 pc 0x0000000000867964 /vendor/lib64/egl/libGLES_mali.so (glGenFramebuffers+56)
#06 pc 0x000000000025f314 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#07 pc 0x00000000002d3808 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#08 pc 0x00000000002da3c4 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#09 pc 0x00000000001ce744 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#10 pc 0x00000000001cce70 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#11 pc 0x00000000002de864 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#12 pc 0x0000000000159f54 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGSurface::draw+576) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#13 pc 0x000000000015837c /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGPlayer::flushInternal+160) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#14 pc 0x00000000001582a0 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGPlayer::flush+88) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#15 pc 0x000000000014e7b8 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#16 pc 0x00000000001559b4 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGDecoder::renderFrame+176) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#17 pc 0x0000000000155494 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGDecoder::readFrameInternal+600) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#18 pc 0x000000000015569c /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (pag::PAGDecoder::readFrame+96) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
#19 pc 0x00000000001bbe18 /data/app/~~xkQFTxbOkS_0Toq7xcH07w==/com.voicechat.whistr-RYsNbVfxvy8NLOFLsGunkA==/split_config.arm64_v8a.apk (Java_org_libpag_PAGDecoder_readFrame+112) (BuildId: 78e1594ce961af15582a273cc2f02b665aa03b5d)
at org.libpag.PAGDecoder.readFrame (Native method)
at org.libpag.c$a.a (SourceFile:3)
at org.libpag.PAGImageView.a (SourceFile:86)
at org.libpag.PAGImageView.flush (SourceFile:12)
at org.libpag.PAGImageView.onAnimationUpdate (SourceFile:7)
at org.libpag.PAGAnimator.onAnimationUpdate (SourceFile:3)
【Demo及附件】
怎么说?没有动静?
怎么说?没有动静?
你也遇到了吗
怎么说?没有动静?
你也遇到了吗
线上一堆,都拍ANR第二位了~~~~~好家伙,完全不知道为什么
PAG 频繁设置setPath,引发的decoderInfo 被持有锁导致的anr,解决方案。是如果path相同,不再设置了。释放资源出来。林北找到原因了
protected void initDecoderInfo() { synchronized (decoderInfo) { if (!decoderInfo.isValid()) { if (_composition == null) { _composition = getCompositionFromPath(_pagFilePath); } if (decoderInfo.initDecoder(_composition, width, height, _maxFrameRate)) { if (_pagFilePath != null) { _composition = null; } } if (!decoderInfo.isValid()) { return; } } refreshMatrixFromScaleMode(); freezeDraw.set(false); } }
`public boolean flush() { if (!decoderInfo.isValid()) { initDecoderInfo(); if (!decoderInfo.isValid()) { postInvalidate(); return false; } } if (decoderInfo.hasPAGDecoder()) { _numFrames = decoderInfo.numFrames(); } _currentFrame = PAGImageViewHelper.ProgressToFrame(animator.progress(), _numFrames); if (!handleFrame(_currentFrame)) { forceFlush = false; return false; }
forceFlush = false;
postInvalidate();
return true;
}`