mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[Docs] (P13): a matched P12/P13 FCL soak shows the silent death's rate does not depend on the MobileGL library, and the W6 progress is recorded.
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
| P8 转出(B):`PipeCalls.def:260` `GenerateMipmap` 仍是 `kWaitApplied`,裁定 14 的理由(CPU 滤波碰 client 影子)已不成立,可改 `kWaitNone` | 性能工作(协议行为变更,需单独裁定) |
|
||||
| P8 转出(C):server SSBO 标记过近似(窗口内每个绑定的 SSBO 都标);一个留在 SSBO 绑定上又当 restart EBO 用的 buffer 每次 draw 都回读 | 性能工作 |
|
||||
| P13 转出(W5 翻转后,ID-P13-2 记录项,用户裁定记为债务):Magma monolith 走记录臂比前端臂慢约 16%——Y700 上 FCL MC 1.21.5、RD2 小场景、时钟未钉:记录臂 168 / 176 fps,同库强制前端臂 206 / 204 fps,即每帧 CPU 约 5.8 ms 对 4.9 ms(渲染线程都约占满一核);Espryt 持平(224 / 226 对 222)。疑因:`VulkanRenderer::SetupDraw` 在记录臂直接进 `SetupWireDraw`,绕过只在前端臂跑的 `TrySetupDrawFastPath`(PLAN-P13 §1.3 已提示「换臂前先量」)。W6 删前端臂后这部分成本固定下来 | P13 收官后:设备上钉时钟 profile Magma monolith 每 draw 成本(simpleperf,对比 W5 前端臂数据),再决定给 wire draw 臂补快路径;P13 内不优化 |
|
||||
| P13 转出(FCL 浸泡,用户裁定:FCL 暂不改、MobileGL 不做规避):FCL game process can die silently (exit SIGNALED status=34, SIGRTMIN+2): the JVM signal reset after renderer selection drops libcore's AsynchronousCloseMonitor handler, and FCL's okhttp/Okio watchdog then kills the process; renderer-independent (reproduced on P12 and P13 libraries, both backends; untested with other renderers)。浸泡:P13 库 30 次(Magma 22 / Espryt 8)死 18 次、P12 库 10 次死 2 次,全部 status=34,无 tombstone、无 kgsl;证据与机理见 [`p13/fcl-soak/README.md`](p13/fcl-soak/README.md) | fix belongs in FCL (save/restore libcore's SIGRTMIN+2 sigaction around JVM creation); left for the user |
|
||||
| P13 转出(FCL 浸泡,用户裁定:FCL 暂不改、MobileGL 不做规避):FCL game process can die silently (exit SIGNALED status=34, SIGRTMIN+2): the JVM signal reset after renderer selection drops libcore's AsynchronousCloseMonitor handler, and FCL's okhttp/Okio watchdog then kills the process; renderer-independent (reproduced on P12 and P13 libraries, both backends; untested with other renderers)。浸泡:P13 库 30 次(Magma 22 / Espryt 8)死 18 次、P12 库 10 次死 2 次;P12 / P13 逐次交替的对照(同场景同网络时段)P12 4/10、P13 2/10,时间线(`Renderer:` 行到 MobileGL 首行约 6.2 s、晚死固定在其后约 9.4 s)两库相同,无证据表明 MobileGL 拉高概率;全部 status=34,无 tombstone、无 kgsl;证据与机理见 [`p13/fcl-soak/README.md`](p13/fcl-soak/README.md) | fix belongs in FCL (save/restore libcore's SIGRTMIN+2 sigaction around JVM creation); left for the user |
|
||||
| P8 转出(monolith,ID-P8-13):9 条 monolith 缺陷真实内容 0 命中,不在 dev 上修——Espryt `*IndirectCount` / 原生 indirect `gl_BaseVertex` / fp64 收窄读未同步影子;Magma `glMultiDrawArraysIndirectCount` CPU 臂同病;Magma 录制中途 `SyncGpuWrites` → SIGSEGV;Espryt RGB16F / RGB32F CPU 滤波读陈旧影子、R11F / 深度链无视 BASE / MAX;Magma 无 BLIT 颜色格式缺着色器 mip 臂;Espryt 拷贝后 `glGetTexImage` 读拷贝前影子(证据见 `notes/p8/{B,C,D,E}.md`) | P13(monolith 换到已修好的记录臂) |
|
||||
| P8 转出(monolith,feat,ID-P8-14):feat 的 monolith 臂每次 indirect draw 在命令缓冲有 GPU 写时整 buffer 同步回读(`SyncClientSideVertexArraysForIndirectFetch`,`62bfe461`,dev 无);Magma 的 split 构建 monolith 深度 mip 不传 view 类型,无深度 `BLIT_DST` 的设备上 1D 深度链会拿到 2D view(推断,Release 下断言编译掉,SV) | P13(monolith 换臂) |
|
||||
| P8 转出(MD):dev 的 `RingAllocateSlow` 在出错的上下文上无上限地排水(设备上挂在 `glFinish`) | 小修(dev) |
|
||||
|
||||
@@ -25,6 +25,12 @@
|
||||
| W5 S5 | 本地完成 | `b13af729` `b1978890` | 记录臂三旋钮进 `RecordArmTable`;`DataArmIsRecord` / `RecordArmAliasesFrontend`、`MonolithTakesRecordArm`、`MOBILEGL_PIPE_DATA_ARM` 跟 `RECORD_ARM`(不再跟传输) |
|
||||
| W5 S6 | 本地完成 | `dd7fbbd7` | 集成 peek 在无传输构建里也答 `dataArmIsRecord`;跟踪器探针跟 `RECORD_ARM` |
|
||||
| W5 S7 | 本地完成(CI 待跑) | `19610290` `23593c9f`…`e9a353c3` | **翻转**:`MOBILEGL_BUILD_RECORD_ARM` 恒 ON,无 MG_Remote 的库(FCL 形态)也跑记录臂。`MOBILEGL_PIPE_PERSISTENT_MPROTECT=0` 关掉跟踪器的 SIGSEGV 处理器(FCL 是 JVM;启动打日志;单元 `TheMprotectSwitchSendsEveryNewMapToTheHashScan`),mprotect 臂只在 Linux / Android 编。`runtime_mode_proof` 加正半:两形态都要 `MG_Record` 符号(push 294、split 300),自测含两条无 `MG_Record` 的红例。翻转后 push 单元暴露的残留误分类(记录动词的 verb 状态盖章、按记录读的顶点 / IBO / 绑定点 / 采样器路径、XFB 捕获回落、视图窗口 mip、镜像可绑定重铸、暂存库跟随、跟踪器成员资格、测试的前端臂钉)全部改跟 `RECORD_ARM`;push 单元 2028/2028 |
|
||||
| W5 S8 | 已推(CI 37515697754:382 绿、2 红均已归类并修) | `7fb18840` `c1e985c8` | `MOBILEGL_BUILD_RECORD_ARM` 被 unifdef 掉,`retired_switches` 禁止它回到 `#if`。verify 车道的阴性对照 B 改省略 `ReadPixels:GetPixelStoreParameters`(monolith 记录臂不再读 GenerateMipmap 的活动单元);monolith 启动时记一行数据臂 |
|
||||
| W6a | 已推(`887547c7`,CI 37534648608 / 37534648624) | `d61a4240` `740dd301` | 记录臂是唯一数据臂:`DataArmIsRecord()` 恒 true(constexpr),`MOBILEGL_PIPE_DATA_ARM` / `InitDataArm` / `ScopedMonolithFrontendArm` 删;`HandleRecycle.AbaControlHandles` 车道退役;立方面读回两条规则移到 `CubeFaceReadbackScenario` |
|
||||
| W6b | 已推(同上) | `742d43ae` `e0113503` `3aed7ae0` `e822c933` | 数据臂谓词从两后端所有分支折掉,记录臂 return 之后的前端臂代码删;XFB 角色状态只留一份;10 个前端臂单元用例删(逐条记入 `docs/ci/ci-cleanup-log.md`),两条 GL 采样规则移到 `TextureUnitSamplingScenario` |
|
||||
| W6c | 本地完成 | `dc1e95b4` | Magma 前端臂:前端 `MagmaProgramSource` 构造与 `IsWire()` 折掉,前端采样集遍历、占位纹理、VAO draw memo、`MagmaPipeIdentityTables` 与 ABA 旋钮、`TrySetupDrawFastPath` 与快照、前端 fallback 纹理删(约 7100 行) |
|
||||
| W6d | 本地完成 | `8abae647` `8bc39c79` | Espryt 各族臂谓词(framebuffer / texture / sampler / program / buffer / vertex input 及其别名)折为记录臂,`g_fboTextureSyncList` 等前端遍历删;启动时只查色彩附件上限(`ResolveRecordArmFamilies`);未迁移仿真名单清空(审计保留,守 0) |
|
||||
| W6e | 本地完成 | `dab827d5` `737ef5e9` | 后端表里 verb port 在各模式都覆盖的前端对象入口(`ClearNamedFramebuffer*`、`BlitNamedFramebuffer`、`GetTex(ture)Image`、`MultiDrawElements`)及其实现删;Magma 前端 render pass、pending clear、renderbuffer 半边删。link ratchet 171 → 58,`# P13` 95 → 11(余下 11 条:Espryt 以前端对象铸句柄的 slot 表入口与 apply 线程拒绝函数 7 条、`PipeInputs` 访问器 3 条、FBO 附件 `IsComplete` 1 条) |
|
||||
|
||||
### G1 退役读数(ID-P13-4,2026-10-06)
|
||||
|
||||
|
||||
@@ -42,6 +42,18 @@ after (or do not reset that signal). Left for the user.
|
||||
| clean (`soak-p13-clean-summary.txt`, `soak2.sh` with the SigCgt sampler and per-run ftrace) | P13 FCL lib at `c1e985c8` | 30 (22 Magma, 8 Espryt) | 18: Magma 13/22, Espryt 5/8 |
|
||||
| P12 control (`soak-p12-control-summary.txt`) | P12 end `743f4e8e` | 10 Magma | 2 |
|
||||
|
||||
| matched A/B (`soak-ab-p12-p13-summary.txt`, `soak3.sh`): P12 and P13 libraries alternated launch by launch, Magma, same world, settings and network window, 40 s in-world | P12 `743f4e8e` / P13 `c1e985c8` | 10 + 10 | P12 4/10, P13 2/10 |
|
||||
|
||||
**Does the P13 library raise the rate?** No evidence it does. The clean soak's 18/30 against the
|
||||
first P12 control's 2/10 was not a comparable pair: the two ran at different times (the rate tracks
|
||||
whether FCL's background request is still pending, i.e. network conditions), and the P12 control
|
||||
overlapped the contaminated P13 runs below. In the matched, interleaved A/B the P12 library died
|
||||
more often (4/10) than the P13 one (2/10). The timeline is library-independent too: in every death
|
||||
logcat FCL's `Renderer:` line is followed by the JVM's signal reset after 0.2-0.6 s and by
|
||||
MobileGL's first log line after about 6.2 s for both libraries (P12 deaths: 6.3 s and 6.2 s), and
|
||||
the late deaths land at a fixed ~9.4 s after the `Renderer:` line on both libraries - a timeout
|
||||
started before MobileGL is loaded, not a window MobileGL's start-up widens.
|
||||
|
||||
Earlier P13 runs (first 5-run soak) are not counted: two soak scripts were found driving the
|
||||
phone at once and force-stopping each other's runs; `soak2.sh` now takes a lock.
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# run backend result mgl arm inworld deathTime exit sig34CaughtAtLaunch sig34CaughtInGame firstUncaught firstMGL ftraceFatal34 tomb+ kgsl
|
||||
1 p12 ok mgl=3 arm=? inworld=0 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=06:52:04.390 firstMGL=06:53:18.552 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
2 p13 ok mgl=310 arm=record inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=06:53:36.454 firstMGL=06:53:25.896 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
3 p12 ok mgl=284 arm=? inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=06:55:08.172 firstMGL=06:54:58.992 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
4 p13 ok mgl=310 arm=record inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=06:56:47.522 firstMGL=06:56:37.813 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
5 p12 ok mgl=284 arm=? inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=06:58:11.427 firstMGL=06:58:01.955 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
6 p13 ok mgl=310 arm=record inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=06:59:44.626 firstMGL=07:00:03.119 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
7 p12 ok mgl=284 arm=? inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=07:01:18.188 firstMGL=07:01:08.751 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
8 p13 ok mgl=310 arm=record inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=07:02:50.811 firstMGL=07:03:27.619 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
9 p12 ok mgl=284 arm=? inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=07:04:24.047 firstMGL=07:04:14.084 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
10 p13 DIED mgl=310 arm=record inworld=0 death=07:07:09.837 exit=[reason=2 (SIGNALED) reason=0 (UNKNOWN) status=34 ] launch34=yes game34=no firstUncaught=07:05:56.650 firstMGL=07:06:50.825 sig34gen/deliv=1/0 tomb+=0 kgsl=0
|
||||
11 p12 DIED mgl=284 arm=? inworld=0 death=07:07:37.670 exit=[reason=2 (SIGNALED) reason=0 (UNKNOWN) status=34 ] launch34=yes game34=yes firstUncaught=07:07:28.471 firstMGL=07:07:18.998 sig34gen/deliv=3/2 tomb+=0 kgsl=0
|
||||
12 p13 ok mgl=3 arm=? inworld=0 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=07:09:01.657 firstMGL=07:10:14.637 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
13 p12 DIED mgl=4 arm=? inworld=0 death=07:10:33.932 exit=[reason=2 (SIGNALED) reason=0 (UNKNOWN) status=34 ] launch34=yes game34=yes firstUncaught=07:10:33.186 firstMGL=07:10:23.982 sig34gen/deliv=2/1 tomb+=0 kgsl=0
|
||||
14 p13 ok mgl=310 arm=record inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=07:12:05.450 firstMGL=07:11:56.252 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
15 p12 ok mgl=284 arm=? inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=07:13:49.067 firstMGL=07:13:38.913 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
16 p13 ok mgl=310 arm=record inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=07:15:09.245 firstMGL=07:14:59.248 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
17 p12 DIED mgl=4 arm=? inworld=0 death=07:17:11.665 exit=[reason=2 (SIGNALED) reason=0 (UNKNOWN) status=34 ] launch34=yes game34=yes firstUncaught=07:16:39.632 firstMGL=07:17:00.892 sig34gen/deliv=3/2 tomb+=0 kgsl=0
|
||||
18 p13 DIED mgl=310 arm=record inworld=9 death=07:18:27.221 exit=[reason=2 (SIGNALED) reason=0 (UNKNOWN) status=34 ] launch34=yes game34=yes firstUncaught=07:18:10.349 firstMGL=07:18:01.124 sig34gen/deliv=3/2 tomb+=0 kgsl=0
|
||||
19 p12 DIED mgl=288 arm=? inworld=9 death=07:19:57.934 exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=yes firstUncaught=07:19:41.110 firstMGL=07:19:31.642 sig34gen/deliv=1/0 tomb+=0 kgsl=0
|
||||
20 p13 ok mgl=310 arm=record inworld=9 death=- exit=[reason=10 (USER REQUESTED) reason=21 (FORCE STOP) status=0 ] launch34=yes game34=no firstUncaught=07:21:11.922 firstMGL=07:21:02.057 sig34gen/deliv=0/0 tomb+=0 kgsl=0
|
||||
soak done
|
||||
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
# soak3.sh <pairs> <secs>: matched A/B, alternating the P12 and P13 FCL libraries on Magma (same world, settings, network window).: FCL launch soak (ONE instance at a time - it takes a
|
||||
# lock) with diagnostics, plus a device-side sampler of the FCL process's caught-signal mask (SigCgt), so a
|
||||
# death by signal 34 can be tied to whether bionic/libcore's SIGRTMIN+2 handler is still installed.
|
||||
export MSYS_NO_PATHCONV=1
|
||||
NP=${1:-10}; SECS=${2:-40}
|
||||
BASE=${SOAK_DIR:?set SOAK_DIR}
|
||||
LOCK=/c/Users/yello/AppData/Local/Temp/claude/C--Users-yello-AndroidStudioProjects-FoldCraftLauncher-MobileGL/0e0e570f-5721-41d8-9d0f-80fcde638a84/scratchpad/soak.lock
|
||||
if ! mkdir "$LOCK" 2>/dev/null; then echo "another soak holds $LOCK"; exit 1; fi
|
||||
trap 'rmdir "$LOCK"' EXIT
|
||||
mkdir -p "$BASE"
|
||||
PKG=com.tungsten.fcl.mgdebug.debug
|
||||
CFG=/data/data/$PKG/files/config.json
|
||||
SUM=$BASE/summary.txt
|
||||
echo "# run backend result mgl arm inworld deathTime exit sig34CaughtAtLaunch sig34CaughtInGame firstUncaught firstMGL ftraceFatal34 tomb+ kgsl" >> "$SUM"
|
||||
adb logcat -G 16M >/dev/null 2>&1
|
||||
# The sampler: every 0.5 s, "<time> <pid> <SigCgt>" for the package's main process.
|
||||
adb shell "su -c 'cat > /data/local/tmp/p13/sigsample.sh'" <<'EOS'
|
||||
end=$(( $(date +%s) + $1 ))
|
||||
while [ $(date +%s) -lt $end ]; do
|
||||
p=$(pidof com.tungsten.fcl.mgdebug.debug | cut -d" " -f1)
|
||||
if [ -n "$p" ]; then echo "$(date +%H:%M:%S.%N | cut -c1-12) $p $(grep SigCgt /proc/$p/status | cut -f2)"; fi
|
||||
sleep 0.5
|
||||
done
|
||||
EOS
|
||||
order=""
|
||||
for i in $(seq 1 $NP); do order="$order p12 p13"; done
|
||||
idx=0
|
||||
for be in $order; do
|
||||
idx=$((idx+1))
|
||||
lvl=$(adb shell dumpsys battery | grep level | tr -dc 0-9)
|
||||
if [ "${lvl:-100}" -lt 40 ]; then echo "battery $lvl - stopping" >> "$SUM"; break; fi
|
||||
OUT=$BASE/run$(printf %03d $idx)-$be; mkdir -p "$OUT"
|
||||
C=cfg-magma.json
|
||||
LIBDIR=$(adb shell "su -c 'ls -d /data/app/*/$PKG*/lib/arm64'" | tr -d '␍')
|
||||
adb shell "su -c 'am force-stop $PKG; cat /data/local/tmp/p13/$C > $CFG; cat /data/local/tmp/p13/lib-$be.so > $LIBDIR/libMobileGL.so'"
|
||||
adb shell "su -c 'ls /data/tombstones | wc -l'" > "$OUT/tomb-before.txt"
|
||||
adb shell "su -c 'dmesg -c >/dev/null 2>&1; echo > /sys/kernel/tracing/trace'"
|
||||
adb logcat -b all -c
|
||||
adb shell "svc power stayon true; wm dismiss-keyguard" >/dev/null 2>&1
|
||||
adb shell "su -c 'sh /data/local/tmp/p13/sigsample.sh $((SECS + 40))'" > "$OUT/sigcgt.txt" 2>&1 &
|
||||
SAMP=$!
|
||||
sleep 1
|
||||
adb shell monkey -p $PKG -c android.intent.category.LAUNCHER 1 >/dev/null 2>&1
|
||||
sleep $((SECS + 45))
|
||||
wait $SAMP 2>/dev/null
|
||||
adb exec-out screencap -p > "$OUT/screen.png"
|
||||
adb logcat -b all -d > "$OUT/logcat.txt"
|
||||
adb shell "su -c 'dmesg'" > "$OUT/dmesg.txt" 2>/dev/null
|
||||
adb shell "su -c 'cat /sys/kernel/tracing/trace'" > "$OUT/ftrace.txt" 2>/dev/null
|
||||
adb shell "dumpsys activity exit-info $PKG" > "$OUT/exitinfo.txt" 2>/dev/null
|
||||
adb shell "su -c 'ls /data/tombstones | wc -l'" > "$OUT/tomb-after.txt"
|
||||
adb shell "su -c 'am force-stop $PKG'"
|
||||
died=$(grep -ac "Process $PKG (pid [0-9]*) has died" "$OUT/logcat.txt")
|
||||
mgl=$(grep -ac " MobileGL" "$OUT/logcat.txt")
|
||||
arm=$(grep -ao "monolith data arm = [a-z]*" "$OUT/logcat.txt" | head -1 | awk '{print $NF}')
|
||||
inworld=$(grep -ac "Server thread\|Preparing spawn area\|Loaded [0-9]* advancements\|joined the game" "$OUT/logcat.txt")
|
||||
firstmgl=$(grep -a " MobileGL" "$OUT/logcat.txt" | head -1 | cut -c7-18)
|
||||
deatht=$(grep -a "Process $PKG (pid [0-9]*) has died" "$OUT/logcat.txt" | head -1 | cut -c7-18)
|
||||
ex=$(grep -aE "reason=" "$OUT/exitinfo.txt" | head -1 | grep -oE "reason=[0-9]+ \([A-Z_ ]+\)|status=[0-9]+" | tr '\n' ' ')
|
||||
# SigCgt bit 33 = signal 34 (SIGRTMIN+2, libcore's async-close wakeup).
|
||||
bit() { [ -z "$1" ] && { echo "?"; return; }; [ $(( (0x$1 >> 33) & 1 )) -eq 1 ] && echo yes || echo no; }
|
||||
launchMask=$(grep -aE "^[0-9:.]+ [0-9]+ [0-9a-f]{16}" "$OUT/sigcgt.txt" | head -1 | awk '{print $3}')
|
||||
gameMask=$(grep -aE "^[0-9:.]+ [0-9]+ [0-9a-f]{16}" "$OUT/sigcgt.txt" | sed -n 60p | awk '{print $3}')
|
||||
firstUn=$(grep -aE "^[0-9:.]+ [0-9]+ [0-9a-f]{16}" "$OUT/sigcgt.txt" | while read t p m; do [ "$(bit $m)" = no ] && { echo $t; break; }; done)
|
||||
# A sig 34 generated toward the package with no matching delivery = the kernel's fatal fast path.
|
||||
gen=$(grep -ac "signal_generate: sig=34" "$OUT/ftrace.txt"); del=$(grep -ac "signal_deliver: sig=34" "$OUT/ftrace.txt")
|
||||
tb=$(( $(tr -dc 0-9 < "$OUT/tomb-after.txt") - $(tr -dc 0-9 < "$OUT/tomb-before.txt") ))
|
||||
kg=$(grep -aciE "kgsl.*(fault|hang|recover|snapshot)|adreno.*fault" "$OUT/dmesg.txt")
|
||||
res=ok; [ "$died" -gt 0 ] && res=DIED
|
||||
echo "$idx $be $res mgl=$mgl arm=${arm:-?} inworld=$inworld death=${deatht:--} exit=[$ex] launch34=$(bit "$launchMask") game34=$(bit "$gameMask") firstUncaught=${firstUn:--} firstMGL=${firstmgl:--} sig34gen/deliv=$gen/$del tomb+=$tb kgsl=$kg" >> "$SUM"
|
||||
done
|
||||
adb shell "svc power stayon false"
|
||||
echo "soak done" >> "$SUM"
|
||||
Reference in New Issue
Block a user