Repository navigation
[human] libuv修正入りのNodeの公開を確認し、Windowsサンドボックスでの動作確認と利用者向けのNode更新案内を決める #734
Copy link
Copy link
Closed
Labels
windowsWindows 固有の問題Windows 固有の問題
Description
やってほしいこと
- libuv 1.53.0 以上を含む Node の公開版が出たかを確認してください(出るまでは待機です)。
- 出たら、その Node を使って、Windows の packaged アプリ(AppContainer のサンドボックス)で
npm test、fork、パイプ付きの子プロセスが終わることを実機で確認してください。 - あわせて、利用者向けに「Node を更新してください」と案内するかどうか、案内の中身を決めてください。
元Issue
#549(Windows サンドボックス内で npm test や fork など子プロセスを起動するコマンドが終わらない)
1. 完了した範囲と未完了の範囲
完了
- 原因の特定: Node が使う libuv の
uv__pipe_serverが、AppContainer の中でパイプを作れず、ERROR_ACCESS_DENIEDを名前の衝突と誤って扱い、無限に再試行する。上流では make libuv compatible with Windows AppContainer libuv/libuv#5178 と #5181 で修正された。 - 上流の修正は、libuv v1.53.0(2026-09-24 公開)に含まれる。
- PR fix(command): node --testの拒否理由に実際のNodeの版と使うフラグを1つだけ書く #560(merge commit bb4fff7): 直接の
node --testを拒否する理由に、実際の Node の版と使うフラグを 1 つだけ書くようにした。 - PR chore(build): 同梱とCIのNodeを22.23.3へ上げる #636(merge commit 44b3831): 同梱と CI の Node を 22.23.2 から 22.23.3 に上げた(v0.7.0-beta.13 に入っている)。ただし 22.23.3 は、修正入りの libuv を含まない。
- PR fix: diagnose unsupported Node child pipes inside Windows sandbox #686(merge commit 448a093): 古い libuv でのパイプ作成を、サンドボックス内で早期に拒否し、理由を示す診断を入れた([bug] Windowsサンドボックス内でnpm testやforkなど子プロセスを起動するコマンドが終わらない #549 に Refs。診断で、原因の修復ではない)。
- 2026-09-24 の合意により、製品側で実行期限(watchdog)を設けて止める案は採っていません。上流の修正待ちが方針です。
未完了
- 修正入りの libuv を含む、Node の公開版の確認(待機中)。
- その版での、Windows packaged AppContainer の実機確認。
- 利用者向けの Node 更新案内の判断。
- 同梱 Node を、修正入りの版に上げること(公開後)。
2. 移管理由(AI だけでは完了できない理由)
- 公開待ちは外部条件で、AI の作業では進みません。時間が経っただけで PASS や close にはできません。
- 実機での確認は、Windows の packaged アプリと、利用者の PATH に入れた Node が必要です。
- 利用者へ Node の更新を案内する内容は、製品の方針の判断です。
3. 現在の Node 各系列の libuv の版(Issue の記載、2026-09-29 の確認)
| Node の版 | 同梱の libuv | 修正(#5181)を含むか |
|---|---|---|
| 22.23.3(2026-09-23 公開。同梱中の版) | 1.51.0 | 含まない |
| 24.21.0 | 1.52.1 | 含まない |
| 26.10.0(2026-09-22 公開) | 1.52.1 | 含まない |
| 参考: Node 22.14 | 1.49.2 | 含まない |
各タグの deps/uv/src/win/pipe.c の uv__unique_pipe_name は、従来の \\?\pipe\uv\... を生成し、#5181 の AppContainer の判定と LOCAL の分岐がありません。libuv 1.53.0 は 2026-09-24 に公開されたため、これらの Node の公開より後です。
4. 確認に使うビルド・コミット
- main の f0c63d1 以降のコミットから作った Windows の packaged アプリを使ってください。
- 利用者の PATH に、libuv 1.53.0 以上を含む公開版の Node を入れた状態で確認します。サンドボックス内の
npm testなどは、同梱のnode.exeではなく、利用者の PATH にある Node で動きます(同梱のnode.exeは、サンドボックスの外で動く Windows Job のラッパーと Team MCP 用)。 - 実施時に、Node の版、libuv の版(Node の
process.versions.uvで確認)、アプリの SHA、Windows の版を記録します。
5. 手順と受入条件
公開の確認:
- Node の公開版(22 系、24 系、26 系など)のリリースノートか、各タグの
deps/uvで、libuv が 1.53.0 以上になっていることを確認する。 - 確認した版の番号と、確認日を、本 Issue に記録する。
実機の確認(公開後):
- その Node を利用者の PATH に入れた状態で、Windows の packaged アプリのサンドボックス内で次を実行し、いずれも無期限に止まらず終わる。
-
npm test -
child_process.fork(IPC つきの子) - パイプつきの
execFileSync(標準入出力が既定のパイプ) -
cmd.exeを子として起動する場合
-
- 既存のサンドボックスの境界(Workspace 外への読み書きの拒否など)が維持される。
- 直接の
node --testを承認前に拒否する既存の動作([bug] Windowsサンドボックス内のコマンドが子プロセスを起動すると返らず、既定のnode --testが終わらない #522 / fix(command-runner): Windowsサンドボックスで終わらない node --test を承認前に理由付きで拒否する #532)は、変更しない。その上で、新しい Node では拒否が不要になるかを判断する。 - 終了後、子プロセスと試験用の profile が残っていない。
案内と同梱版の判断:
- 利用者向けに、「サンドボックスで子プロセスを使うコマンドを動かすには、libuv 1.53.0 以上を含む Node に更新する」という案内を出すか決める(案内の置き場所は、設定の画面、ドキュメント、拒否理由のメッセージなどから選ぶ)。
- 同梱の Node を、修正入りの版へ上げる(PR chore(build): 同梱とCIのNodeを22.23.3へ上げる #636 と同じ手順。版、
node.exeの SHA-256、署名の発行元と thumbprint を公式の配布物と照合する)。
6. 影響する Issue・機能と引き継ぐ依存
- 元 [bug] Windowsサンドボックス内でnpm testやforkなど子プロセスを起動するコマンドが終わらない #549 は、この Issue に移管した後 close(not planned)して構いません。公開待ちと実機確認は、本 Issue に集約します。
- 関連: [bug] Windowsサンドボックス内のコマンドが子プロセスを起動すると返らず、既定のnode --testが終わらない #522(直接の
node --testの拒否)、fix(command-runner): Windowsサンドボックスで終わらない node --test を承認前に理由付きで拒否する #532、[bug] Windowsサンドボックス内でWorkspace内モジュールの require が EPERM で失敗しNodeテストが走らない #514(別原因)。[bug] Windows AppContainer pipe-free Node child startup returns EPERM in CI #694(pipe-free の子が EPERM になる件)は別の原因で、別の [human] Issue で扱います。fix: diagnose unsupported Node child pipes inside Windows sandbox #686 の診断は、古い libuv の Node のために残します。 - 依存: 上流の Node の公開。公開されるまで、実機確認は NOT_RUN のままです。
7. 親の推奨・選択による影響
- 推奨: 公開版を確認するまで、何もせずに待機してください。製品側の実行期限(watchdog)案は、2026-09-24 の合意により採っていません。
- 同梱版を上げるだけでは解消しません。サンドボックス内のコマンドは、利用者の PATH にある Node で動くため、利用者側の Node の更新と、その案内も必要です。
- 案内を出さない場合: 古い Node を使う利用者は、これまでどおり
npm testなどが返らない状態が続きます(fix: diagnose unsupported Node child pipes inside Windows sandbox #686 の診断で、パイプが原因の場合は早期に理由つきで拒否されます)。 - 案内を出す場合: 最低限の版(libuv 1.53.0 以上を含む Node の版)が公開された後に、版を明記して案内してください。公開前に案内を出すと、存在しない版を示すことになります。
事実確認できなかった点
- 2026-09-29 以降に、libuv 1.53.0 以上を含む Node が公開されたか(Issue の記載は 09-29 時点)。
- Node 24 系と 22 系の、今後の取り込み予定の版。
- 修正入りの Node が、AppContainer で実際に子プロセスを作れるか(実機は未確認)。
🤖 Generated with Claude Code
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
windowsWindows 固有の問題Windows 固有の問題
Activity
YOSSII812001 commentedon Oct 5, 2026
公開版確認(2026-10-05)
Node公式配布indexを再確認しました。22/24/26系の最新公開版は次のとおりで、libuv 1.53.0以上を含む候補はまだありません。
OPEN維持(外部依存)。修正を含む公式Nodeが公開され、候補のversion・hash・署名・libuvを確認できた時点で、承認済みの更新計画とWindows AppContainerの実コマンド検証へ進みます。候補がない状態ではbundle更新やnpm/fork/pipe試験は行いません。
#733 のNUL DACL調査は完了しましたが、本件のpipe障害とは別原因です。Grok受入 #730 の合否にも本件の未公開条件を混ぜません。
yusei531642 commentedon Oct 6, 2026
判断(2026-10-06、オーナーから委任)
オーナーから「製品にとってよいなら修正してよい」と判断を任されたので、次のように決めました。
1. 製品側の対応(PR #744)
node --testの事前拒否が Node のバージョンを見ていなかったため、修正入りの Node が出ても拒否し続ける問題がありました。そこで、現在公開されている版(22.23.3、24.21.0、26.10.0 以下)は従来どおり拒否し、それより新しい版はサンドボックス内のガード(#686)に判断を任せるようにしました。ガードは実際の libuv を見るので、修正入りの Node が公開されれば、製品は追加の作業なしで子プロセスのパイプを使えるようになります。2. 利用者向けの Node 更新案内
npm testなどを使うなら、この版以上に更新してください」と案内します。同時に、同梱の Node も修正入りの版に上げます3. 実機での確認
修正入りの Node が公開されたら、この開発機(Windows)で packaged アプリを使い、
npm test、fork、パイプ付きの子プロセスを確認します。人の操作は不要なので、humanラベルを外します。状態: OPEN のまま、上流の公開待ち。
🤖 Generated with Claude Code
fix(sandbox): let Node releases that may carry the libuv pipe fix pas…
YOSSII812001 commentedon Oct 6, 2026
対応状況(2026-10-06)
関連 PR #744 を最新 head
d2a0698b9979432e8e9d76e3b2542b888b1aa04cの必須CI成功、sprintreviewer LGTM、未解決review thread 0件、mergeability確認後にマージしました。merge commitcb174bab0628b271abb5d600695702b0ac73cab1がmainに含まれることを確認済みです。これは将来のNodeに対する事前拒否の解消であり、本Issueの実機受入完了ではありません。本日の公式
https://nodejs.org/dist/index.json全件では libuv >=1.53.0 を含む公開Nodeは0件です。Node 22.23.3はlibuv 1.51.0、24.21.0/26.10.0は1.52.1です。libuv 1.53.0は公開済みですが、Node取り込みPR nodejs/node#66282 はOPENで、実機受入に使える公式Nodeはまだありません。受入条件が未達のためOPENを維持します。公式Node公開後に、その実行ファイルとlibuv版を固定して既存のpackaged AppContainer受入から再開します。署名可能であることをこの公開待ちの解消や実機PASSに置き換えません。
ci: #734 監視 workflow の count 空・本文値の検証・共通セキュリティテストへの追加
ci: #734 libuv 修正入り Node の公開を毎日監視し追跡 Issue を自動で起こす (#767)
yusei531642 commentedon Oct 14, 2026
クローズ根拠(オーナー判断:監視を自動化して close)— 2026-10-14
Node libuv watchを追加しました。[human]の追跡 Issue(labels: windows, human)を1件だけ自動で起こします。重複は本文の監視マーカーで防ぎます。contents: readとissues: writeだけです。判定は fail closed にしており、テストも付けています。NODE_LAST_RELEASE_WITH_OLD_LIBUVの確定🤖 Generated with Claude Code