Repository navigation
Retry transient Linux uinput first-open failures within a fixed bound #58
Description
Summary
Retry transient Linux /dev/uinput first-open failures for a fixed, bounded interval so the helper can survive a short device-node or access-rule initialization race. If access remains unavailable after the bound, exit with a useful diagnostic and the existing permission guidance.
Evidence observed
- Asahi-map issue #6, 2026-09-29: a session service's first open triggered
uinputmodule loading, then exited before udev updated access about 80 ms later. The report proposes a static-node rule, loading the module earlier, or retrying the open. - Omarchy issue #8373, 2026-08-26: a different, persistent failure left
/dev/uinputasroot:rootmode0600; the author reports that asystemd-tmpfilesrule fixed that case.
Interpretation, fit, and confidence
These are two detailed Linux reports with a recurring startup-access theme, not prevalence evidence. The Asahi-map case is transient and fits retry behavior in the Linux helper. The Omarchy case is persistent and demonstrates that retry alone must not claim to fix a permissions configuration. Fit is high for the Linux helper; confidence is moderate.
Acceptance criteria
- Retry only transient first-open failures such as
ENOENTandEACCES, using a deterministic bounded wait/backoff. - Stop retrying at the fixed bound, then exit nonzero with the device path, final error, and actionable existing permission guidance.
- Add focused deterministic helper tests for success after a transient failure and for persistent failure at the retry bound.
- Do not invoke
sudo,chown,chmod, or otherwise change permissions automatically.
Ownership
packages/native-linux-uinput/src/helper/opencontroller-uinput-bridge.c- Focused native helper tests
Keep permission-rule, doctor, and setup-guidance changes in the separate Cycle 8 candidate issue #59.
Non-goals
- Fixing persistent ownership or mode errors through retries.
- Changing udev rules, generating tmpfiles configuration, or installing/loading system modules automatically.
- Changing Windows/macOS behavior or Steam/Proton compatibility.
Prerequisite
Cycle 8 research gate #57 must close with this candidate's scope selected before implementation begins.
No permissions are changed automatically.
Activity