fix: serialize unix app-server startup#23516
Merged
Merged
Conversation
5aef156 to
081fa3f
Compare
359fbac to
296ccb1
Compare
296ccb1 to
45a3c25
Compare
Contributor
Author
|
@codex review |
Contributor
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 45a3c2576c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
willwang-openai
approved these changes
May 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Unix-socket app-server startup can currently race when multiple launch attempts target the same
CODEX_HOME. Those processes can overlap before the control socket exists, which lets them enter SQLite state initialization concurrently and reproduce the startup corruption pattern seen in SSH mode.This change makes the app-server own that singleton startup guarantee. Unix-socket startup now takes a
CODEX_HOME-scoped advisory lock before SQLite initialization, runs the existing control-socket preparation check while holding that lock, returns the establishedAddrInUseerror when another live listener already owns the socket, and releases the lock once the new listener has bound its socket.Design decisions
app-server --listen unix://, not in a desktop-only caller path, so every Unix-socket launch gets the same race protection.app-server proxy, which continues to connect to an already-running listener.prepare_control_socket_path(...), so the preexisting live-listener and stale-socket behavior remains the single source of truth.Testing
Tests: targeted Unix-socket transport tests on the branch checkout, full
codex-clibuild onefrazer-db10, and an SSH-style smoke onefrazer-db10covering concurrent app-server starts, explicit duplicate-start errors, and absence of SQLite startup-error matches in launch logs.