Skip to content

Rollback io_uring completion setup failures - #221

Open
samuel-williams-shopify wants to merge 4 commits into
mainfrom
fix/uring-completion-setup
Open

Rollback io_uring completion setup failures#221
samuel-williams-shopify wants to merge 4 commits into
mainfrom
fix/uring-completion-setup

Conversation

@samuel-williams-shopify

@samuel-williams-shopify samuel-williams-shopify commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • distinguish acquired completion records from operations with prepared SQEs
  • abandon and recycle completion state when SQE acquisition raises
  • apply the rollback path to read, write, wait, and process-wait setup
  • set cancellation state only after a cancellation SQE is available

Testing limitation

A deterministic regression requires forcing io_get_sqe() to raise after a completion record has been acquired. The initial test implemented that with a selector field and private native methods, but that placed fault-injection behavior in the released implementation. Those hooks and the test have been removed.

A future test could use a test-only native build or a Linux subprocess with liburing symbol interposition, provided it can expose the leaked completion state without adding production introspection.

Testing

  • bundle exec bake test (296 passed, 21 skipped locally)
  • Linux native compilation completed successfully in a container
  • GitHub CI is running

Assisted-By: devx/efad4cc8-cf12-4d6e-8c55-6f2c3a6683d2
Assisted-By: devx/efad4cc8-cf12-4d6e-8c55-6f2c3a6683d2
Assisted-By: devx/efad4cc8-cf12-4d6e-8c55-6f2c3a6683d2
Assisted-By: devx/efad4cc8-cf12-4d6e-8c55-6f2c3a6683d2
@samuel-williams-shopify

Copy link
Copy Markdown
Contributor Author

Updated based on review feedback: the selector-level SQE failure field, private test methods, and regression test have been removed. The PR now contains only the lifecycle fix. The PR description documents why deterministic coverage would require either a test-only native build or external liburing interposition plus non-production observability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant