GcAdapterSnapshot::drop only signals shutdown when Arc::strong_count is <= 1 at src/input/gamecube/poll.rs:70-76, but the polling thread holds a clone. The thread can therefore outlive the resource. Parse/short-read errors immediately continue at lines 114-120, potentially creating a busy loop.
Fix: signal shutdown from the owner unconditionally, retain and join a JoinHandle, and add backoff/rate limiting for recoverable read errors.
Severity: Reliability
GcAdapterSnapshot::drop only signals shutdown when Arc::strong_count is <= 1 at src/input/gamecube/poll.rs:70-76, but the polling thread holds a clone. The thread can therefore outlive the resource. Parse/short-read errors immediately continue at lines 114-120, potentially creating a busy loop.
Fix: signal shutdown from the owner unconditionally, retain and join a JoinHandle, and add backoff/rate limiting for recoverable read errors.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Severity: Reliability
GcAdapterSnapshot::drop only signals shutdown when Arc::strong_count is <= 1 at src/input/gamecube/poll.rs:70-76, but the polling thread holds a clone. The thread can therefore outlive the resource. Parse/short-read errors immediately continue at lines 114-120, potentially creating a busy loop.
Fix: signal shutdown from the owner unconditionally, retain and join a JoinHandle, and add backoff/rate limiting for recoverable read errors.