#17528·vercel

CLI: 无限的 EPIPE 循环 在处理异常时,如果标准输出早于预期关闭,则会中止进程

作者: labs-bastion创建于 2026年8月22日更新于 2026年9月9日

页:1

当CLI在写完之前关闭了管子时,“HandleUnexpected”报告说 `EPIPE ' 通过同一断流。 写作完全失败 重新进入 处理者。 没有留守 也没有特例 溪流出错,所以CLI 分配到 V8 中止。

在一台机器上观察了4次,每台从发射到 " SIGABRT " ,每台都有一个~300 MB核心倾卸.

来源

`dist/index.js:1473'(v59.3.0,与59.1.3相同):

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? var handle unexpec = async (err) { { handle handle handle { const {消息} = 错误; if (message. includings ("sentry") QQ message. includings ("ENOTFOUND")) {. } { } { { } 输出 管理器 默认. error (`发生了出乎意料的错误! ${err.stack}; // <- 写给刚刚死去的溪流 等待报告 Error( 等待获取Sentry (), 客户端, 错误 ); process.exit(1);

  • ; process.on (“未发现例外”, handle Unexcept);

一个流错误是这个处理器无法安全地通过该流报告的一个错误类.

由于处理器是“同步”的,重复通过事件循环而不是呼叫
堆栈,所以它从不穿行一个堆叠过流的护卫——它默默地分配. 重复错误
嵌入上一个堆栈,所以字符串每个周期会长出~10帧,直到~4 GB堆积天花板
触发“记忆的致命处理出炉” - “bort()”。

证据

从 4.9 GB 核心堆放地计算,没有从代码推断:

** 量 * * 值 * * *
|-|-|-.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * ** * * * ** * ** * * *** ***************
`在进程中. handle unexpected ' 重复 . 586 045 .
~ 时间 ~ ~ 65 s ~ ~

重复的堆积块 :

Write 发布后( 节点: 内部/ 流 base commons: 159: 15) at Socket. write(节点:net:1270:8) at Writable.write(节点:内部/流/可写:512:10) (Vercel/dist/chunks/chunk-OX7KI3LF.js:4503:19) (Vercel/dist/chunks/chunk-OX7KI3LF.js:4527:12) (Vercel/dist/index.js: 1473:26) (中文(简体) ).


`Socket. write'而不是TTY书写证实Stdout是管子。

4个崩溃,全部只读输出生成命令,都带有字节同堆栈通过
64个帧 :

命令 处理器重复
|-|-|-.
“Vercel项目”是(未计算)
`Vercel 列表-是'                                   (未计算)                              
`Vercel 日志<url}}}##########
`ZZTERM6 QZ是生产 ' 586 045 |

* 复制

将“ Vercel” 命令插入一个提早退出的读取器:

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
Vercel是生产 头 -20
Vercel 已经准备好

这是一个比赛,它需要读者退出 而CLI仍然在写,所以 输出在~64 KB管缓冲下,它经常正常地完成. 投票循环 ("直到Vercel是"Grep-q"准备;做睡眠 15;做") 击中次数远超过一发. 命令,仅通过重试。 我没有找到一个决定主义的一行人。 以上为正常使用时间为5天。

设置`-最大-旧-空间-尺寸'较高,只会延长循环,扩大核心堆放。

建议 . . . . . . .