1、先看堆栈
----- pid 7101 at 2023-10-20 15:43:00.266360022+0800 -----
Cmd line: com.sec.android.app.camera
Build fingerprint: 'samsung/a04ser/a04:14/UP1A.231005.007/A045FXXU3DWJ3:user/release-keys'
ABI: 'arm64'
Build type: optimized
suspend all histogram: Sum: 835.893ms 99% C.I. 0.027ms-139.059ms Avg: 6.429ms Max: 233.936ms
DALVIK THREADS (55):
"main" prio=5 tid=1 Native
| group="main" sCount=1 ucsCount=0 flags=1 obj=0x72269f08 self=0xb400007ede047400
| sysTid=7101 nice=-10 cgrp=default sched=0/0 handle=0x7edfc5a500
| state=S schedstat=( 5009146051 5422999746 7529 ) utm=337 stm=163 core=0 HZ=100
| stack=0x7fd9b09000-0x7fd9b0b000 stackSize=8188KB
| held mutexes=
native: #00 pc 000ede24 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4) (BuildId: 568aaff312a9935f191a7b8b90dec42b)
native: #01 pc 0009fe4c /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156) (BuildId: 568aaff312a9935f191a7b8b90dec42b)
native: #02 pc 0005f4e4 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver+292) (BuildId: 2a9292c6385398608753a56ed1e4ee29)
native: #03 pc 0006088c /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse+60) (BuildId: 2a9292c6385398608753a56ed1e4ee29)
native: #04 pc 000605c8 /system/lib64/libbinder.so (android::IPCThreadState::transact+216) (BuildId: 2a9292c6385398608753a56ed1e4ee29)
native: #05 pc 0007903c /system/lib64/libbinder.so (android::BpBinder::transact+188) (BuildId: 2a9292c6385398608753a56ed1e4ee29)
native: #06 pc 0019e708 /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact+152) (BuildId: 5e80c63a12fa79ddd8a48cf84d242568)
at android.os.BinderProxy.transactNative(Native method)
at android.os.BinderProxy.transact(BinderProxy.java:636)
at android.os.storage.IStorageManager$Stub$Proxy.getVolumes(IStorageManager.java:2278)
at android.os.storage.StorageManager.getVolumes(StorageManager.java:979)
at java.lang.reflect.Method.invoke(Native method)
at com.wingos.wingcamera.utils.StorageUtils.getVolume(StorageUtils.java:147)
at com.wingos.wingcamera.manager.CameraAppManager.getViewBuckets(CameraAppManager.java:2576)
at com.wingos.wingcamera.manager.CameraAppManager.getLastMediaUri(CameraAppManager.java:2476)
at com.wingos.wingcamera.manager.CameraAppManager.getLastGifMediaUri(CameraAppManager.java:2848)
.............................
从堆栈上可以看出,连拍的时候,调用了 StorageService的一个接口,然后一直卡住超时。
2、有了堆栈,找对应模块进行分析
找了SS 的 storageService模块进行分析,给出了两个疑问点:
1)问题发生前 storage 硬件模块发生异常
2)CPU被限频,26U 项目上 理论上camera场景下,SS说不会进行限频
10-20 15:43:56.692 1000 1362 8154 E ActivityManager: ANR in com.sec.android.app.camera (com.sec.android.app.camera/.Camera)
10-20 15:43:56.692 1000 1362 8154 E ActivityManager: PID: 7101
10-20 15:43:56.692 1000 1362 8154 E ActivityManager: Reason: Input dispatching timed out (6f87c32 com.sec.android.app.camera/com.sec.android.app.camera.Camera (server) is not responding. Waited 10001ms for MotionEvent)
。。。。。。。
10-20 15:43:56.692 1000 1362 8154 E ActivityManager: ------------------------------------------------------------------------------------------------------------------
10-20 15:43:56.692 1000 1362 8154 E ActivityManager: scaling_cur_freq 1351000 1351000 1351000 1351000 745000 745000 745000 745000
10-20 15:43:56.692 1000 1362 8154 E ActivityManager: scaling_governor schedutil schedutil schedutil schedutil schedutil schedutil schedutil schedutil
10-20 15:43:56.692 1000 1362 8154 E ActivityManager: scaling_max_freq 1351000 1351000 1351000 1351000 745000 745000 745000 745000
10-20 15:43:56.692 1000 1362 8154 E ActivityManager: ------------------------------------------------------------------------------------------------------------------
ok,有了进展,下一步拉通两个模块:Storage、系统组同事
3、针对疑问点一,storage模块 给出解释说 开机之后log有被覆盖迹象,缺失log,结合 先前是进行连拍的场景,图不会保存在sdcard,所以storage模块的问题暂且放一放。
4、针对疑问点二,系统组同事在异常发生后,发现了限频的log,但是异常之前并没有发现限频log,也给出了log缺失的结论,同步也提了一个case,case回复说 温度达到59°,触发了 平台限频导致。
5、问题结案
针对平台CPU温升限频,加上高负载的连拍场景,此问题先维持现状处理,后续观察发生的概率再判断是否进行修改。