Pull Request on 2025年12月30日

dotnet/runtimeにマージされたPull RequestをAIで日本語要約

注意点

このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。


目次

  1. #122769 Fix file descriptor leak
  2. #122767 [LoongArch64] Align PR#108419: Verify TLS resolver code for LA64.
  3. #122723 Move stgpool to md subsystem, extract memory streams, eliminate VM dependencies on MD internals
  4. [#122646 browser][coreCLR] running main/exit/abort/logging and infra for unit testing

#122769 Fix file descriptor leak

  • 作成者: @dovydenkovas
  • 作成日時: 2025年12月29日 07:04:08(UTC)
  • マージ日時: 2025年12月30日 16:16:17(UTC)
  • ラベル: area-System.Security community-contribution

概要

System.Security.Cryptography.Native ライブラリの X.509 処理において、メモリ不足エラー時にファイルディスクリプタがリークしていた問題を修正します。opendir()で開かれたディレクトリストリームが、メモリ割り当て失敗時に適切にクローズされていませんでした。Linux Verification Center の静的解析ツール SVACE により検出されました。

変更内容

  • ファイル: src/native/libs/System.Security.Cryptography.Native/pal_x509.c
  • 変更: 1行追加(合計1行の差分)
  • 内容: メモリ不足エラーでの関数リターン時に、opendir()で開かれたディレクトリストリームを明示的にクローズする処理を追加

パフォーマンスへの影響

影響なし

エラーハンドリングパス専用の修正のため、正常系の実行には影響ありません。むしろ、リソースリークを防ぐことで長時間の暗号化処理実行時のメモリ効率が向上します。

関連Issue

Issue #122769

その他

  • 修正者は Linux Verification Center によって報告されたものを対応
  • レビュワーは vcsjones により確認予定
  • セキュリティ・暗号化領域の所有者チーム(@dotnet/area-system-security, @bartonjs, @vcsjones)により監視中

#122767 [LoongArch64] Align PR#108419: Verify TLS resolver code for LA64.

  • 作成者: @LuckyXu-HF
  • 作成日時: 2025年12月29日 06:40:42(UTC)
  • マージ日時: 2025年12月30日 06:47:19(UTC)
  • ラベル: area-VM-coreclr community-contribution arch-loongarch64

概要

このPRはLoongArch64(LA64)アーキテクチャ向けのTLS(スレッドローカルストレージ)リゾルバーコードの検証を行うもので、PR#108419の対応をLoongArch64に適用しています。TLS Descriptorリロケーションタイプ(R_LARCH_TLS_DESC6)を有効にするため、コンパイルパラメータ-mtls-dialect=descを追加しています。

変更内容

  • src/coreclr/vm/threadstatics.cpp (+103/-23)

    • TLSリゾルバーコードの検証ロジック追加
    • LA64向けのTLS Descriptor処理の実装
  • src/tests/JIT/Directed/tls/CMakeLists.txt (+4/-0)

    • TestTLSWithLoadedDlls.shのコンパイルオプションに-mtls-dialect=descを追加
    • TLS Descriptor方式のリロケーションテストを有効化

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 複数のレビュワー(shushanhf、jkotas)による確認が進行中
  • LA64アーキテクチャ固有の変更で、既存の他のアーキテクチャには影響なし
  • TLS Descriptorはより高度なTLSアクセス方式であり、LoongArch64でのサポート強化を意図している

#122723 Move stgpool to md subsystem, extract memory streams, eliminate VM dependencies on MD internals

  • 作成者: @Copilot
  • 作成日時: 2025年12月24日 06:03:50(UTC)
  • マージ日時: 2025年12月30日 14:01:02(UTC)
  • ラベル: area-VM-coreclr

概要

このPRは、メタデータ管理の責務分離を目的として、ストレージプール関連のコード(stgpool)をVM内部から独立したメタデータサブシステムに移動しました。メモリストリーム機能を独立したmemorystreams.*に抽出し、VMのメタデータ内部実装への依存性を排除しています。

変更内容

  • ファイル移動: stgpool.h/cppstgpooli.h/cppstgpoolreadonly.cppsrc/coreclr/inc/およびsrc/coreclr/utilcode/からsrc/coreclr/md/配下に移動
  • 新規ファイル作成:
    • memorystreams.h/cpp: CInMemoryStreamCGrowableStreamを抽出
    • mdfileformat.h: CPackedLen構造体を移動
  • 依存性の削減: VM層がメタデータ内部実装に直接アクセスしないようにリファクタリング
  • 条件付きコンパイル: DAC(Debugging Access Component)対応のためのSUPPORTS_DACアノテーション削除や条件付きガード導入

パフォーマンスへの影響

影響なし。本PRは構造的な改善であり、実行時の動作には影響しません。

関連Issue

dotnet/runtime#35624

その他

  • レビュープロセスで複数のビルド破損が発生し、Copilotが都度修正対応。最終的にはSUPPORTS_DACアノテーション削除により解決
  • メタデータとVM層の責務をより明確に分離し、将来的な保守性向上と機能独立性強化を実現

#122646 [browser][coreCLR] running main/exit/abort/logging and infra for unit testing

  • 作成者: @pavelsavara
  • 作成日時: 2025年12月18日 17:15:56(UTC)
  • マージ日時: 2025年12月30日 21:19:50(UTC)
  • ラベル: arch-wasm area-Host os-browser

概要

WebAssemblyのブラウザランタイムにおいて、メインメソッドの実行制御とユニットテスト用のインフラストラクチャを強化するPRです。dotnet.runMainAndExit()dotnet.runMain()の新APIを追加し、dotnet.run()の動作を変更(CoreCLRではランタイムを生存させる)。診断機能(dotnet.diagnostics.js)を追加し、スタックトレースの記号化、終了処理、コンソール転送などのテスト支援機能を実装しました。

変更内容

主なAPI追加・変更:

  • dotnet.runMainAndExit() - メイン実行後に終了
  • dotnet.runMain() - メイン実行後もランタイム継続(CoreCLR新仕様)
  • dotnet.run() を非推奨化しrunMain()へ誘導(CoreCLRのみ)
  • abortStartup()abortTimers()abortPosix()の実装
  • isExited()isRuntimeRunning()の状態確認API

ビルド・診断機能:

  • <WasmTestSupport>true</WasmTestSupport>新MSBuildプロパティでdotnet.diagnostics.jsをデプロイ
  • dotnet.diagnostics.jsに以下機能を実装:
    • symbolicateStackTrace - スタックトレース記号化(スケルトン)
    • exitOnUnhandledError - ハンドルされないエラーで終了
    • appendElementOnExit - 終了時にDOM要素追加
    • logExitCode - 終了コードのログ出力
    • asyncFlushOnExit - 非同期フラッシュ
    • forwardConsole - コンソール転送
  • -sEXIT_RUNTIME=1を設定(C++グローバルデストラクタ有効化)
  • LoadBootResourceCallbackModule.onConfigLoadedModule.onDotnetReadyのコールバック呼び出し

ファイル変更:

  • src/native/corehost/browserhost/ - ホスト制御ロジックの大幅拡張
  • src/native/libs/System.Native.Browser/diagnostics/ - 新診断モジュール(console-proxy.tsexit.ts等)
  • src/mono/wasm/ - テストアセット・テンプレートの更新
  • TypeDefinitions(.d.ts)の更新

パフォーマンスへの影響

影響なし - 主にランタイム制御フローの改善でパフォーマンス低下なし。診断機能は必要時のみ有効化。

関連Issue

  • #101169
  • #75335

その他

  • 破壊的変更: CoreCLRとMonoのdotnet.run()動作が異なる仕様に。詳細ドキュメント確認推奨。
  • 従属PR: #122616、#122495に依存
  • テスト対象: WasmBrowserRunMainOnlyおよびライブラリテスト
  • Blazor統合のサポート(BootResourceCallback呼び出し追加)