Skip to content

fix(core): suppress PTY resize EBADF errors#27461

Merged
scidomino merged 1 commit into
mainfrom
tomm_fix
May 26, 2026
Merged

fix(core): suppress PTY resize EBADF errors#27461
scidomino merged 1 commit into
mainfrom
tomm_fix

Conversation

@scidomino
Copy link
Copy Markdown
Collaborator

@scidomino scidomino commented May 26, 2026

Summary

Matches upstream node-pty fix for issue #827. Suppresses crashes when resizing a PTY that is in the process of exiting. This issue was exacerbated by recent UI layout changes that increased resize frequency.

Related Issues

b/516018762

@scidomino scidomino marked this pull request as ready for review May 26, 2026 17:48
@scidomino scidomino requested a review from a team as a code owner May 26, 2026 17:48
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses race conditions occurring during PTY resizing, particularly when a PTY is in the process of exiting. By suppressing specific EBADF and PTY-related errors, the application avoids unnecessary crashes caused by frequent UI layout updates.

Highlights

  • Error Suppression: Updated the global uncaught exception handler to suppress EBADF errors in addition to existing PTY resize errors.
  • Shell Execution Service: Extended the error handling logic in ShellExecutionService to safely ignore EBADF errors during PTY operations.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 26, 2026

Size Change: +312 B (0%)

Total Size: 33.9 MB

Filename Size Change
./bundle/chunk-3EA2KB4L.js 0 B -3.77 kB (removed) 🏆
./bundle/chunk-DG4Q7X56.js 0 B -16.4 MB (removed) 🏆
./bundle/chunk-HRP6Z6KZ.js 0 B -3.43 kB (removed) 🏆
./bundle/chunk-L5PRLBTW.js 0 B -49.2 kB (removed) 🏆
./bundle/chunk-MFNFADG7.js 0 B -2.79 MB (removed) 🏆
./bundle/chunk-U5F4B43G.js 0 B -660 kB (removed) 🏆
./bundle/chunk-W6Q6GKFL.js 0 B -19.5 kB (removed) 🏆
./bundle/chunk-YTLG42NH.js 0 B -13 kB (removed) 🏆
./bundle/core-BIL5OCWL.js 0 B -49.5 kB (removed) 🏆
./bundle/devtoolsService-GQPZ367L.js 0 B -28 kB (removed) 🏆
./bundle/gemini-XOORSS25.js 0 B -589 kB (removed) 🏆
./bundle/interactiveCli-FP2RAT4Y.js 0 B -1.3 MB (removed) 🏆
./bundle/liteRtServerManager-CUV7VERV.js 0 B -2.08 kB (removed) 🏆
./bundle/oauth2-provider-WDMBRAOA.js 0 B -9.12 kB (removed) 🏆
./bundle/chunk-56SF674W.js 2.79 MB +2.79 MB (new file) 🆕
./bundle/chunk-DJW36NBF.js 19.5 kB +19.5 kB (new file) 🆕
./bundle/chunk-H3KZDLC2.js 660 kB +660 kB (new file) 🆕
./bundle/chunk-IDNSAXCK.js 3.77 kB +3.77 kB (new file) 🆕
./bundle/chunk-OII62DPB.js 3.43 kB +3.43 kB (new file) 🆕
./bundle/chunk-TYXHE66T.js 49.2 kB +49.2 kB (new file) 🆕
./bundle/chunk-UL3CSQO5.js 13 kB +13 kB (new file) 🆕
./bundle/chunk-XK3KDGGU.js 16.4 MB +16.4 MB (new file) 🆕
./bundle/core-N6IGN6W7.js 49.5 kB +49.5 kB (new file) 🆕
./bundle/devtoolsService-GXS64TCO.js 28 kB +28 kB (new file) 🆕
./bundle/gemini-FNQ63NKC.js 589 kB +589 kB (new file) 🆕
./bundle/interactiveCli-DPXNOMAA.js 1.3 MB +1.3 MB (new file) 🆕
./bundle/liteRtServerManager-72YMHG5R.js 2.08 kB +2.08 kB (new file) 🆕
./bundle/oauth2-provider-BRSK6FEI.js 9.12 kB +9.12 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
./bundle/bundled/third_party/index.js 8 MB 0 B
./bundle/chunk-34MYV7JD.js 2.45 kB 0 B
./bundle/chunk-5AUYMPVF.js 858 B 0 B
./bundle/chunk-5PS3AYFU.js 1.18 kB 0 B
./bundle/chunk-6HI7VNOG.js 124 kB 0 B
./bundle/chunk-DAHVX5MI.js 206 kB 0 B
./bundle/chunk-IUUIT4SU.js 56.5 kB 0 B
./bundle/chunk-TUDYL3X4.js 40.3 kB 0 B
./bundle/cleanup-TU5LX3C6.js 0 B -902 B (removed) 🏆
./bundle/devtools-V7NE4CQA.js 696 kB 0 B
./bundle/events-XB7DADIJ.js 418 B 0 B
./bundle/examples/hooks/scripts/on-start.js 188 B 0 B
./bundle/examples/mcp-server/example.js 1.43 kB 0 B
./bundle/gemini.js 5.33 kB +223 B (+4.37%)
./bundle/getMachineId-bsd-TXG52NKR.js 1.55 kB 0 B
./bundle/getMachineId-darwin-7OE4DDZ6.js 1.55 kB 0 B
./bundle/getMachineId-linux-SHIFKOOX.js 1.34 kB 0 B
./bundle/getMachineId-unsupported-5U5DOEYY.js 1.06 kB 0 B
./bundle/getMachineId-win-6KLLGOI4.js 1.72 kB 0 B
./bundle/https-proxy-agent-AVGR4LHR.js 490 B 0 B
./bundle/multipart-parser-KPBZEGQU.js 11.7 kB 0 B
./bundle/sandbox-macos-permissive-open.sb 890 B 0 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB 0 B
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B
./bundle/sandbox-macos-strict-open.sb 4.82 kB 0 B
./bundle/sandbox-macos-strict-proxied.sb 5.02 kB 0 B
./bundle/src-LG4OHBW7.js 233 kB 0 B
./bundle/src-QVCVGIUX.js 47 kB 0 B
./bundle/start-J4ES4RMT.js 0 B -622 B (removed) 🏆
./bundle/tree-sitter-7U6MW5PS.js 274 kB 0 B
./bundle/tree-sitter-bash-34ZGLXVX.js 1.84 MB 0 B
./bundle/worker/worker-entry.js 361 kB 0 B
./bundle/cleanup-KIMBNMD7.js 902 B +902 B (new file) 🆕
./bundle/start-H5GNKC44.js 622 B +622 B (new file) 🆕

compressed-size-action

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request aims to suppress EBADF (Bad File Descriptor) errors on Windows and Linux, which can occur as a race condition when resizing a node-pty terminal that has already exited. However, globally swallowing all EBADF errors in the uncaughtException handler is highly risky as it can mask critical bugs from other parts of the application. It is recommended to restrict this suppression specifically to errors originating from node-pty by checking the error's stack trace.

Comment thread packages/cli/index.ts Outdated
@scidomino scidomino added this pull request to the merge queue May 26, 2026
Merged via the queue into main with commit 8b56d27 May 26, 2026
31 checks passed
@scidomino scidomino deleted the tomm_fix branch May 26, 2026 20:02
shaurya-cd pushed a commit to shaurya-cd/gemini-cli that referenced this pull request May 27, 2026
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.

4 participants