项目场景:
RK3399+Andorid7.1.1
问题描述:
锁屏触发,系统自动重启。
2020-10-21 13:14:24.753 249-249/? E/hwcomposer-drm: signal_all_fence Failed to wait for acquire 0/-1 1000ms
2020-10-21 13:14:24.753 249-249/? E/hwcomposer-drm: signal_all_fence Failed to wait for acquire 0/-1 1000ms
--------- beginning of crash
2020-10-21 13:14:24.764 249-249/? A/libc: Fatal signal 11 (SIGSEGV), code 2, fault addr 0x76f08074b8 in tid 249 (surfaceflinger)
2020-10-21 13:14:24.836 6775-6775/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2020-10-21 13:14:24.836 6775-6775/? A/DEBUG: Build fingerprint: 'Android/rk3399_mtb918/:7.1.2/NHG47K/zhuhua10191658:userdebug/test-keys'
2020-10-21 13:14:24.836 6775-6775/? A/DEBUG: Revision: '0'
2020-10-21 13:14:24.836 6775-6775/? A/DEBUG: ABI: 'arm64'
2020-10-21 13:14:24.836 6775-6775/? A/DEBUG: pid: 249, tid: 249, name: surfaceflinger >>> /system/bin/surfaceflinger <<<
2020-10-21 13:14:24.836 6775-6775/? A/DEBUG: signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x76f08074b8
2020-10-21 13:14:24.836 6775-6775/? A/DEBUG: x0 0000000000000000 x1 0000000040043e00 x2 0000007fe0854774 x3 0000000000000003
2020-10-21 13:14:24.836 6775-6775/? A/DEBUG: x4 0000000000000000 x5 0000000000000000 x6 0000000000000000 x7 feff666e6b61686b
2020-10-21 13:14:24.837 6775-6775/? A/DEBUG: x8 0000000000000039 x9 0000007fe0854728 x10 0000007fe08546f0 x11 0000007fe0854770
2020-10-21 13:14:24.837 6775-6775/? A/DEBUG: x12 0000000000000030 x13 ffffffffffffffff x14 ff00000000000000 x15 ffffffffffffffff
2020-10-21 13:14:24.837 6775-6775/? A/DEBUG: x16 00000076f0082848 x17 00000076f0cd3c18 x18 0000000000000000 x19 00000076f042d6a0
2020-10-21 13:14:24.837 6775-6775/? A/DEBUG: x20 51b3bea3677d46cf x21 00000000000003e8 x22 00000076f0074294 x23 00000076f0074495
2020-10-21 13:14:24.837 6775-6775/? A/DEBUG: x24 0000000000000088 x25 000000000028e020 x26 0000000000001bd4 x27 00000000ffffffff
2020-10-21 13:14:24.837 6775-6775/? A/DEBUG: x28 00000076f0579498 x29 0000007fe0854800 x30 00000076f00500dc
2020-10-21 13:14:24.837 6775-6775/? A/DEBUG: sp 0000007fe08547a0 pc 00000076f00500dc pstate 0000000000000000
2020-10-21 13:14:24.844 6775-6775/? A/DEBUG: backtrace:
2020-10-21 13:14:24.844 6775-6775/? A/DEBUG: #00 pc 00000000000410dc /system/lib64/hw/hwcomposer.rk30board.so (_ZN7android16signal_all_fenceERNS_21DrmHwcDisplayContentsEP22hwc_display_contents_1+168)
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #01 pc 0000000000046154 /system/lib64/hw/hwcomposer.rk30board.so
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #02 pc 00000000000525f8 /system/lib64/libsurfaceflinger.so
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #03 pc 0000000000045f48 /system/lib64/libsurfaceflinger.so
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #04 pc 0000000000045330 /system/lib64/libsurfaceflinger.so
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #05 pc 0000000000043fcc /system/lib64/libsurfaceflinger.so
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #06 pc 0000000000043d24 /system/lib64/libsurfaceflinger.so
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #07 pc 0000000000018270 /system/lib64/libutils.so (_ZN7android6Looper9pollInnerEi+764)
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #08 pc 0000000000017eb4 /system/lib64/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+60)
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #09 pc 0000000000034108 /system/lib64/libsurfaceflinger.so
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #10 pc 0000000000043710 /system/lib64/libsurfaceflinger.so (_ZN7android14SurfaceFlinger3runEv+20)
2020-10-21 13:14:24.845 6775-6775/? A/DEBUG: #11 pc 00000000000014bc /system/bin/surfaceflinger
2020-10-21 13:14:24.847 6775-6775/? A/DEBUG: #12 pc 000000000001a594 /system/lib64/libc.so (__libc_init+88)
2020-10-21 13:14:24.847 6775-6775/? A/DEBUG: #13 pc 00000000000011e8 /system/bin/surfaceflinger
2020-10-21 13:14:25.149 638-873/system_process W/NativeCrashListener: Couldn't find ProcessRecord for pid 24
原因分析:
没有接显示屏,使用ardc导致。具体解决通过Android锁屏流程跟踪分析到:
frameworks\base\services\core\java\com\android\server\power\PowerManagerService.java
private void updatePowerStateLocked() {
if (!mSystemReady || mDirty == 0) {
return;
}
if (!Thread.holdsLock(mLock)) {
Slog.wtf(TAG, "Power manager lock was not held when calling updatePowerStateLocked");
}
Trace.traceBegin(Trace.TRACE_TAG_POWER, "updatePowerState");
try {
// Phase 0: Basic state updates.
updateIsPoweredLocked(mDirty);
updateStayOnLocked(mDirty);
updateScreenBrightnessBoostLocked(mDirty);
// Phase 1: Update wakefulness.
// Loop because the wake lock and user activity computations are influenced
// by changes in wakefulness.
final long now = SystemClock.uptimeMillis();
int dirtyPhase2 = 0;
for (;;) {
int dirtyPhase1 = mDirty;
dirtyPhase2 |= dirtyPhase1;
mDirty = 0;
updateWakeLockSummaryLocked(dirtyPhase1);
updateUserActivitySummaryLocked(now, dirtyPhase1);
if (!updateWakefulnessLocked(dirtyPhase1)) {
break;
}
}
// Phase 2: Update display power state.
boolean displayBecameReady = updateDisplayPowerStateLocked(dirtyPhase2);
// Phase 3: Update dream state (depends on display ready signal).
updateDreamLocked(dirtyPhase2, displayBecameReady);
// Phase 4: Send notifications, if needed.
finishWakefulnessChangeIfNeededLocked();
// Phase 5: Update suspend blocker.
// Because we might release the last suspend blocker here, we need to make sure
// we finished everything else first!
updateSuspendBlockerLocked();
} finally {
Trace.traceEnd(Trace.TRACE_TAG_POWER);
}
}
解决方案:
使用显示屏没有问题,希望可以和你遇到的问题一样!