Skip to content
Closed
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cli/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ _Released 10/20/2025 (PENDING)_
- Fixed an issue where grouped command text jumps up and down when expanding and collapsing in the command log. Addressed in [#32757](https://github.com/cypress-io/cypress/pull/32757).
- Fixed an issue where command snapshots were not correctly displayed in Studio. Addressed in [#32808](https://github.com/cypress-io/cypress/pull/32808).
- Fixed an issue with grouped console prop items having a hard to read blue color in the console log and duplicate `:` characters being displayed. Addressed in [#32776](https://github.com/cypress-io/cypress/pull/32776).
- Fixed an issue where a EPIPE error shows up after CTRL+C is done in terminal. Fixes [#30659](https://github.com/cypress-io/cypress/issues/30659). Addressed in [#32821](https://github.com/cypress-io/cypress/pull/32821).
- Added more context to the error message shown when `cy.prompt()` fails to download. Addressed in [#32822](https://github.com/cypress-io/cypress/pull/32822).

**Misc:**
Expand Down
16 changes: 14 additions & 2 deletions packages/data-context/src/data/ProjectConfigIpc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,11 @@ export class ProjectConfigIpc extends EventEmitter {

let resolved = false

this._childProcess.on('error', (err) => {
this._childProcess.on('error', (err: NodeJS.ErrnoException) => {
if (err.code === 'EPIPE') {
return
}

debug('unhandled error in child process %s', err)
this.handleChildProcessError(err, this, resolved, reject)
reject(err)
Expand All @@ -170,6 +174,10 @@ export class ProjectConfigIpc extends EventEmitter {
* but it's not.
*/
this.on('childProcess:unhandledError', (err) => {
if (err.code === 'EPIPE') {
return
}
Copy link

Choose a reason for hiding this comment

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

Bug: Unhandled EPIPE Errors Block Promise Resolution

When an EPIPE error occurs, the error handlers for loadConfig() and registerSetupIpcHandlers() return early without rejecting their respective promises. This leaves callers waiting indefinitely for promises that will never settle.

Additional Locations (1)

Fix in Cursor Fix in Web


debug('unhandled error in child process %s', err)
this.handleChildProcessError(err, this, resolved, reject)
reject(err)
Expand Down Expand Up @@ -229,7 +237,11 @@ export class ProjectConfigIpc extends EventEmitter {
return new Promise((resolve, reject) => {
let resolved = false

this._childProcess.on('error', (err) => {
this._childProcess.on('error', (err: NodeJS.ErrnoException) => {
if (err.code === 'EPIPE') {
return
}

this.handleChildProcessError(err, this, resolved, reject)
reject(err)
})
Expand Down