百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#19035·nushell

在具有零宽度终端的流式闭包中运行 `print` 时,内存分配无限

作者: Lhcfl创建于 2026年9月16日更新于 2026年9月16日
标签status:needs-triage

QQ 错误报告表单

  • 我对问题追踪器进行了基本搜索,找到任何类似的现有问题。
  • [x]我检查过 我的版本至少是最新的稳定发布 通过我的安装方法。

描述错误

我和Pi代理商一起写 Nushell 脚本时碰到了这个: 它意外地分配了 大量的内存 并冻结了机器

当Nushell的stdout是一个tty (pty) 有** 窗口大小为 0 列**,呼号为"印刷" 在一条流管内(例如:`. . . . . . . . . 内存分配:RSS在大约1 GB/s时增长,CPU使用率接近100%, 过程一直运行到被OOM杀手杀死。

如果给同一 pty 的普通窗口大小, 问题会完全消失 (`Stty Cols 100'),或如果Nushell的"tdout"不是"tty".

页:1

  • `COLUMNS ' 环境变量并不能避免这一问题;nushell似乎读作: 只有Tty的"TIOCGWINSZ".
  • 间接证据:从关闭处取出 " 印 " 出,只归还该元素 (每个 l|l}l}l}l}l}l}l}l}l}l}l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)t)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l causesl causesl causesl)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l)l) 不能将表格放入0栏!',这表明Nushell确实看到宽度为0。
  • 只叫 " 印刷 " 一次(不是在连续关闭内)不会触发。
  • 在终端宽度为0时,看起来与`印刷'的渲染/包装逻辑有关,但 我没有挖掘来源。

如何繁殖

关键条件:nushell的stdout必须是一出0列pty. 书状(1)'仅未能取得 窗口大小——因此只创建 “ 0x0” pty —— 当它自己的 stdin 不是 tty ** 时。 因此,需要XQ/dev/null;没有它,script'将继承当前大小 终端和本期不转载:

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 脚本 -qec "nu --no-config-file -c" 1.3 – each {| {| print print | } } } } } } } } } } } {| {| {| {| {| {| {| {| {| {| {|


上面的命令并不依赖于任何外部程序. 我遇到的其实是
用于外部命令输出的相同模式 :

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
脚本 -qec "nu -- no-config-file -c' ^bash -c\" \"echo a\" \\\行\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

在真正的终端上运行第一个命令(Stty size' =23 115'),`nu'的RSS仍然 发展到3047米B,不得不终止.

观察:`nu'进程'的RSS每秒增长大约1GB,CPU占近100%, 它永远不会离开——直到被OOM杀手杀死。 数据 " 印刷 " 的数量 生产是很小的,但过程总是分配。

预期行为

使用零宽终端, " 打印 " 应当只是正常打印(或至少出错,或 倒回一些默认宽度)而不是无约束地分配内存.

QQ 配置

键值
. . . . . . .

内容来源: nushell/nushell

查看 GitHub 原文在 GitHub 查看讨论