Skip to content

Retry transient Linux uinput first-open failures within a fixed bound #58

Closed

Description

@SYMBaiEX

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 uinput module 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/uinput as root:root mode 0600; the author reports that a systemd-tmpfiles rule 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 ENOENT and EACCES, 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    cycle-8Tracked work for OpenController AI and Gaming Improvement Cycle 8cycle-8-candidateEvidence-backed candidate prepared for Cycle 8 review

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions