Root My Galaxy 0.3.40
SHA-256: c4a6c805d6882c0559d5a1dfd46233fcc2ac44b5119bb038b57c27961b4047bd
Changes since v0.3.39.
What's changed
- #32 Fix CZG3 attempt discovery and external stage timings
Full changelog
Detailed pull-request notes for all changes included in this release.
#32 — Fix CZG3 attempt discovery and external stage timings
Summary
Fix the remaining External Observer v2 instrumentation gap exposed by the v0.3.39 standalone sentinel, without changing exploit behavior.
Attempt PID discovery
- Match exploit-attempt start lines by their semantic fields (
exploit attempt=,pid=,delay=) instead of depending on the colored[+]prefix. - Apply the same rule to the native standalone log tailer and the Kotlin marker parser used by Shizuku.
- Keep timeout and failed-attempt lines excluded from
attempt_begin. - Add regression coverage for the real ANSI-colored
pr_successshape and timeout lines.
KernelSU stage timings
- Normalize post-exploit KernelSU stage timings so they cannot be earlier than the elapsed exploit time measured by the external observer.
- Preserve already-valid later timings and preserve advanced KernelSU stages without adding a regressed race-stage timing.
- Add a regression for the v0.3.39 zero-millisecond stage timing case.
Why
The v0.3.39 sentinel cd140518-c42b-4fa0-b5a7-cf1cf48bf6a3 succeeded on attempt 1, and the observer correctly covered helper, supervisor, and all slide children, but reported trace_complete=false / process_coverage_reason=attempt_discovery. The payload emits pr_success with an ANSI reset between the [+] decoration and exploit attempt=..., so the literal native/Kotlin matcher never saw the attempt begin line even though it was present in the raw payload log.
The same run also exposed zero-millisecond StagingKernelSu, LateLoadingKernelSu, and VerifyingKernelSu history timings even though the external observer had a valid exploit elapsed time.
Scope
App observer/reporting only. No changes to the payload, P0/FOPS race timings, offsets, reclaim, retry policy, supervisor behavior, keepers, cgroup protection, fail-closed behavior, payload selection, or KernelSU execution flow.
Validation
Passed GitHub Actions run 33654590433 with:
./gradlew --build-cache :app:testDebugUnitTest :app:lintDebug :app:assembleRelease -PreleaseVersionCode=10040 -PreleaseVersionName=0.3.40
The temporary validation workflow was removed after the successful run; the final PR diff contains only the five observer/reporting/test files.