Repository navigation
v3.7.8 — the parallelism bounded; the phone's plumbing untouchable
Axion SPSM v3.7.8 (versionCode 66)
The load spike and the vanishing navigation bar, fixed at their source; the share resolver untouchable.
What you saw on v3.7.7, one by one
You reported four things: everything working too slow, applying and exiting
taking far longer than normal, Franco showing a high average load ("never
happening before"), and the three-button navigation bar disappearing
completely for 7–8 seconds, many times. All four were the same bug wearing
different clothes.
v3.7.7's parallelism had no ceiling. The per-package loops and the wake /
deep-phase fans ran every call at once — on the wake, on every screen-off and
on exit, dozens of pm and cmd subshells were asked of the phone in the
same instant, on cores the power-save governor holds at minimum frequency.
The run queue spiked (Franco's average load), every call in the crowd waited
for every other one (apply and exit slower than before), and SystemUI
starved — the navigation bar is SystemUI drawing, so 7–8 seconds without it
is 7–8 seconds of SystemUI not getting scheduled.
Fixed where it started — every fan now has a ceiling:
- Per-app work runs six packages at a time (apply, restore, the ROM
background option, "Block other apps" both ways, the background sweep). - The engine's phase fans run two options at a time (wake, deep apply,
deep release) — and the wake still restores your cores first, before
anything else starts. - Same work in the same wall time, a fraction of the peak load. That is the
whole fix: concurrency with a ceiling, not a stampede.
The "intent resolver isn't available" dialog
That one was new option "Restrict system apps too" (v3.7.7) reaching too far:
its widening path suspended com.android.intentresolver — the share
resolver every "Share" button in every app routes through — and Android
answered with its suspended-app dialog when you backed out of an app.
The resolver can never be suspended again. The resolver, the permission
controller, the document picker and the media provider now sit in the
never-touch set beside the dialer, SMS, emergency, keyboard, launcher and
modem — no option, now or later, suspends them.
- The option is safe to leave ON — that is what it is for on OEM phones.
- On a clean ROM like your AxionOS it is still fine to leave OFF.
Also
- The three doze-state reads carry timeout lids (15 s / 15 s / 5 s). Your
v3.7.5 log showeddumpsys deviceidleblocking for 889 s once; a read that
hangs can now cost seconds, never a quarter of an hour. - Nothing else changed: the cores, the six slots, the tile, the recovery
command and every option's behaviour are exactly as v3.7.7 shipped them.
Your two-minute test: what the log actually says
The log you sent has one screen-off long enough to check: the screen went off
at 11:14:21 and came back at 11:16:42 — 2 minutes 21 seconds. There is
no cores_sleep line anywhere in the log. This time the cores did not
sleep — and the reason is v3.7.7's own slowness eating your test:
- The module's daemon is a single loop. On screen-off it runs the whole deep
phase itself, and on v3.7.7 that phase took 2 minutes 21 seconds of
unbounded parallel calls fighting each other on minimum-frequency cores.
The daemon could not so much as look at the screen until 11:16:42 — the
same second you woke the phone. Its one-minute core timer never got a turn. - The proof is in the log itself: the daemon prints an
aliveheartbeat
every minute it is allowed to run. Across your screen-off there is not one
heartbeat between 11:14:21 and 11:17:28 — it was blocked the whole time.
So the timer starved for exactly as long as the deep phase. v3.7.8's
bounding is what gives the cores their minute back: the same phase, six
packages and two options at a time, finishes well inside a minute even with
264 apps to stop — and the timer fires on schedule. The feature itself is
proven on your phone: your v3.7.5 night log shows
cores_sleep: 6 core(s) asleep - cores 0 and 1 stay awake.
Check it on v3.7.8: mode ON → screen off → wait a minute or two →
su -c cat /sys/devices/system/cpu/cpu2/online
0 = asleep (cpu3–cpu7 will read the same; cpu0/cpu1 stay 1). Wake the
phone and every core is back before anything else runs.
Recovery (unchanged, and always in the docs)
su -c sh /data/adb/spsm/scripts/engine.sh six-restore
Install
Mode off → flash Axion-SPSM-v3.7.8-RMX3430.zip → reboot.
Harness
586 checks, 0 failed — including the new bounded-fan cases and a case that
widens the system-app set the way the option does and proves the resolver and
its plumbing are never suspended.
Download
Flashable zip (also committed in this repo at the tag):
sha256: `ac523791d3a868699960d0999087e575df1f225975d927ade45d29a610d8d024`