microsoft / microsoft/TypeScript

`checkImportMetaProperty`: debug failure crash

オープン
#56,054 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Bug Domain: Crashes Help Wanted
主要言語
Go
スター
111k
フォーク
14.4k
平均マージ
1日 19時間
マージ済み PR(30日)
117

説明

🔎 Search Terms

Hi

This is another follow-up ticket from the fuzzing crashes discussion and
the first debug failure report

Search terms:

  • transpileModule
  • debug failure
  • crash
  • checkImportMetaProperty
🕗 Version & Regression Information
⏯ Playground Link

No response

💻 Code
const ts = require("typescript");

const hex_string = "2c726270726f746f74797065326f746f747970656201000000000000053c7b746f3b6f74796f6a7375747270726f3b6f747970652d7c7b7c3c7b643c7c3c7f004005041274747375747270726f3b70652d72742a40283c7f7f61776169747f7f7670652d7c7b7c3c7b643c7c3c7f000005045b1274747375743170726f3b70652d7c28696d706f72742a40283c7f7f5f7f7f7f7f00000061776169747f7f7661727b067b636f6e7374727563746f722e70726f746f7439707b6f6a737574722c726f3b6f747970652d7c7b7c3c7b643c7c3c7f000005041274747375747270726f63617f3d045f523c6e7b5b233c7c213c7576616e0a726c3c696d706f726c742e7d0c3c696d706f72742e7d0c7b746f7b746f5c5c745c745c745c745c745c745c745c745c745c745c745c745c745c745c745c745c745c745c745c745c745c745c74733d3d2b3333333328732e2e73706f726c742e7d0c3c696d706f72742e7d0c7b743d083e28732c08006172756e6b6e6f776e747275270b100d2e70726f746f7479707b7c3c7b743c7c3c5100007b7b75740b00000000652e0030002a00002c000000120c0b50000000007273000005041274747375740470726f3b7f7f7f7f7f7f7f2e283c7f7f61776169747f7f7670650d2d7c7b7c3c7b643c7c3c7f0000050412747473757432707211440f742c637b6f127d3d7b0500000000000000742c637b6f127d3d7b05000000000000007a21593a";
const input = hex_string.match(/.{1,2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join('');
ts.transpileModule(input, {});
🙁 Actual behavior
TypeScript/node_modules/typescript/lib/typescript.js:119406
        throw e;
        ^

Error: Debug Failure. False expression: Containing file is missing import meta node flag.
    at checkImportMetaProperty (TypeScript/node_modules/typescript/lib/typescript.js:74543:13)
    at checkMetaProperty (TypeScript/node_modules/typescript/lib/typescript.js:74506:16)
    at checkExpressionWorker (TypeScript/node_modules/typescript/lib/typescript.js:77249:18)
    at checkExpression (TypeScript/node_modules/typescript/lib/typescript.js:77138:34)
    at maybeCheckExpression (TypeScript/node_modules/typescript/lib/typescript.js:76222:30)
    at BinaryExpressionStateMachine.onRight (TypeScript/node_modules/typescript/lib/typescript.js:76186:18)
    at Array.right (TypeScript/node_modules/typescript/lib/typescript.js:27825:36)
    at trampoline (TypeScript/node_modules/typescript/lib/typescript.js:27591:44)
    at TypeScript/node_modules/typescript/lib/typescript.js:76116:24
    at checkExpressionWorker (TypeScript/node_modules/typescript/lib/typescript.js:77261:18)

Node.js v18.16.0

🙂 Expected behavior

Not crash the Node.js runtime

Additional information about the issue

No response

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

提供された Node.js スクリプトを ts.transpileModule で使用してクラッシュを再現し、その後 typescript.js の checkImportMetaProperty と、その周辺の checkMetaProperty パスを調査します。最小化した入力で Debug Failure が発生せず、Node.js ランタイムもクラッシュしなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
node.js, typescript
領域
compilers
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。