CLI: 无限的 EPIPE 循环 在处理异常时,如果标准输出早于预期关闭,则会中止进程
页: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天。
设置`-最大-旧-空间-尺寸'较高,只会延长循环,扩大核心堆放。
建议 . . . . . . .
内容来源: vercel/vercel