Microsoft/TypeScript

Crash: RangeError: Maximum call stack size exceeded in isReachableFlowNodeWorker with complex for loop headers

Open

#63092 opened on Feb 4, 2026

View on GitHub
 (2 comments) (0 reactions) (0 assignees)TypeScript (48,455 stars) (6,726 forks)batch import
BugDomain: check: Control FlowHelp Wanted

Description

🔎 Search Terms

"Maximum call stack size exceeded"

"isReachableFlowNodeWorker stack overflow"

"Control flow analysis crash"

"for loop reachability crash"

🕗 Version & Regression Information

Crashes in 5.7.3, 5.8.3, 5.9.3, Nightly,TS7.

⏯ Playground Link

https://www.typescriptlang.org/zh/play/?target=7&ts=6.0.0-dev.20260203#code/PTAEAEEMBtoewO4FUB2AnAppAxgC0gEbQYDCcAJhgFygBmMAzhgFAAuaAnqAN7Oj904aUAAo+AiSNoBXFNlYBLOClEBKHqFa40iUACIAjHoDcoAL6qRq0+In8ps+UpQAqNRq06E+gEwnzlta2dg5yispuVh7aunoAzP4WVsHq3ObMZszYkKx4ohip6aCQDPzGQA

💻 Code

try {
    for (
        (function () { throw "1"; })(); 
        (function* () { throw "2"; })();
        (function* () { throw "3"; })()
    ) { }
}
catch (e) { }
 as  ;

🙁 Actual behavior

 .\ts-versions\nightly\node_modules\.bin\tsc.cmd  .\reachabilityChecks8_mutated_batch0.ts
D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:123214
      throw e;
      ^
RangeError: Maximum call stack size exceeded
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70125:37)                                                                                       
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70135:77)                                                                                       
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70135:77)                                                                                       
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70135:77)                                                                                       
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70135:77)                                                                                       
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70135:77)                                                                                       
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70135:77)                                                                                       
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70135:77)                                                                                       
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70135:77)                                                                                       
    at isReachableFlowNodeWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:70135:77)                                                                                       

Node.js v22.19.0

🙂 Expected behavior

The compiler should not crash.

Additional information about the issue

No response

Contributor guide