microsoft / microsoft/TypeScript

compiler memory leak in 5.8.x and upwards

未关闭
#62,143 10 条评论 2 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

Needs More Info
主要语言
Go
星标
111k
派生
14.3k
平均合并
2 天 4 小时
30 天内合并 PR
132

描述

### 🔎 Search Terms

5.8, mem

### 🕗 Version & Regression Information

- This changed between versions 5.7 and 5.8

### ⏯ Playground Link

_No response_

### 💻 Code

https://github.com/fxdave/cuple/pull/new/typescript-issue-5-8-memory-leak

### 🙁 Actual behavior

```
$ npx tsc

<--- Last few GCs --->

[34857:0x559d92e7c000] 42329 ms: Scavenge (interleaved) 4081.2 (4090.1) -> 4078.8 (4098.6) MB, pooled: 0 MB, 5.79 / 0.00 ms (average mu = 0.281, current mu = 0.252) allocation failure;
[34857:0x559d92e7c000] 43481 ms: Mark-Compact (reduce) 4089.9 (4103.4) -> 4081.8 (4088.4) MB, pooled: 0 MB, 59.32 / 0.00 ms (+ 880.5 ms in 176 steps since start of marking, biggest step 5.5 ms, walltime since start of marking 998 ms) (average mu = 0.2
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----

1: 0x559d50eec8b4 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [node]
2: 0x559d5140dd34 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [node]
3: 0x559d5140de3b v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [node]
4: 0x559d5169e0ac [node]
5: 0x559d516a4356 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [node]
6: 0x559d516a4467 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector, v8::base::TimeTicks) [node]
7: 0x559d516b3bc4 [node]
8: 0x559d516b6dd4 [node]
9: 0x559d52146ba7 [node]
fish: Job 1, 'npx tsc' terminated by signal SIGABRT (Abort)
```

### 🙂 Expected behavior

```
$ npx tsc
(List of type errors.)
```

### Additional information about the issue

NOTE:
It's not a node(24.4.1) issue, I tried with a different node version (node:22-bookworm from dockerhub).
The project is tiny.
I tried adding all my free rams to node (12GB) it ate it.

Steps to reproduce:
``` bash
# Download this branch: https://github.com/fxdave/cuple/pull/new/typescript-issue-5-8-memory-leak
git clone -b typescript-issue-5-8-memory-leak https://github.com/fxdave/cuple.git
cd cuple

# Setup:
npm i
make build # Important!

# run npx tsc in the tests folder
cd test
npx tsc
```

(the code contains errors, but that shouldn't matter.)

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

使用 cuple 仓库的 typescript-issue-5-8-memory-leak 分支复现:运行 npm i,运行 make build,然后 cd test 并运行 npx tsc。使用提供的项目比较 TypeScript 5.8+ 与 5.7,并确认编译报告类型错误,而不是耗尽堆。

由索引模型根据 Issue 内容生成。

评估

技术栈
typescript
领域
compilers
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。