An injected touch does not wake a blanked screen, and every gesture arm then measures a still image
scope: generic · severity: trap · confidence: proven · subsystem: display
Symptom — a gesture arm that ran, printed no error, and measured nothing:
drag on org.gnome.Epiphany NOT MEASURED: 0 frames in 10.2s. The screen never changed during the run -- the gesture hit nothing that animates.[rec] scrollY 0 -> 0Or, worse, an arm whose instrument does not check: uprobes armed on the render phases report zero hits for every phase, which reads exactly like “this workload does not use the rendering pipeline”. A whole session’s conclusion was built on that null, and it was wrong – see the-scroll-stall-is-the-pages-own-javascript.
Do not assume a phone that answers ssh has a screen that is on. phosh’s screensaver powers the output down after a few minutes idle, and uinput events do not undo it: the injected touch reaches the client, but never the idle notifier, so the compositor keeps the output off. An unattended arm – which is every arm, since it takes minutes and nobody is watching the panel – starts blanked by construction.
Nothing in the numbers says so. The DPU counter reads 0 frames, which also
happens for a gesture aimed at an end stop; grim blocks and times out, which
also happens on a wedged compositor; and the phone is otherwise perfectly
healthy.
The backlight is not the lever. echo 0 > /sys/class/backlight/*/bl_power
as root turns the backlight on and changes nothing else: the compositor’s output
stays off and the same drag still moves the page zero pixels. Measured, not
assumed.
The fix is the screensaver’s own call, and it has to run as the session
user – from root the session bus answers Call failed: Socket not connected:
busctl --user call org.gnome.ScreenSaver /org/gnome/ScreenSaver \ org.gnome.ScreenSaver SetActive b falsetools/ph-ui.py unblank is that call, dropping back to the session user with
sudo -u when it is invoked as root, and ph-gesture-bench.py now runs it
before every measurement – so every arm in this tree that drives a gesture is
covered without changing the arm. If you are driving the screen some other way,
call it yourself before you believe a frame count.
Related — the-instrument-is-guilty-until-proven-innocent,
uprobes-do-not-attach-to-an-already-mapped-library.
