The relaunch restore probes the saved browser dir with os.ReadDir on the UI thread before the first frame. A FUSE stall on external storage there would hang the app on the splash screen (reported on device, intermittent; the 17:15 occurrence rotated out of logcat before it could be pulled and left no pad.pad ANR). Two changes: - dirReadable: run the probe in a helper goroutine with a 2 s deadline; a stalled read now costs at most 2 s and falls back to the startup directory instead of hanging the splash. - Phase logs (session load duration, restore, entering frame loop, first frame rendered) so the next hang bisects itself: the missing line names the blocked phase. Verified on device: full chain logs within 40 ms of process start. |
||
|---|---|---|
| .. | ||
| pad | ||