Pull Request on 2026年07月11日

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

注意点

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



#130550 [browser] nodejs --experimental-wasm-exnref

概要

WebAssembly例外参照型(exnref)の実験的機能に対応するため、Node.js実行時に--experimental-wasm-exnrefフラグを追加する変更です。CoreCLRおよびMono WASMテストスクリプト、サンプル実行スクリプト、ドキュメントを統一的に更新し、WASM実行環境での一貫性を確保しています。

変更内容

  • src/tests/Common/CLRTest.Execute.Bash.targets: Unix環境でのCoreWLRブラウザテスト実行時にNode.jsに--experimental-wasm-exnrefフラグを追加
  • src/tests/Common/CLRTest.Execute.Batch.targets: Windows環境でのCoreWLRブラウザテスト実行時にNode.jsに--experimental-wasm-exnrefフラグを追加
  • src/mono/sample/wasm/wasm.mk: MonoサンプルのMakefile実行/デバッグターゲットにフラグを追加
  • src/mono/sample/wasm/Directory.Build.targets: MonoサンプルのMSBuildターゲットにフラグを追加
  • docs/workflow/building/coreclr/wasm.md: Node.js実行手順のドキュメントを更新してフラグの使用を反映

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更は内部ビルド/テスト構成の更新であり、公開APIには影響しません。WebAssembly例外参照型は実験的機能のため、開発者がWASMテストやサンプルを実行する際にはNode.jsに当該フラグを指定する必要があります。


#130543 [wasm] Fix CoreCLR P/Invoke EntryCount for libSystem.Globalization.Native

概要

WebAssembly(wasm)上のCoreCLR環境で、libSystem.Globalization.NativeのP/Invoke EntryCountが不正な値に設定されていた問題を修正します。PR #130140で新しいP/Invoke関数が追加された際、EntryCountが33のままとなっており、テーブルの最後のエントリ(GlobalizationNative_ToUnicode)が未到達になっていました。これによりIdnMapping.GetUnicode/ToUnicodeテストがDllNotFoundExceptionで失敗していました。

変更内容

  • src/coreclr/vm/wasm/browser/callhelpers-pinvoke.cpp: libSystem.Globalization.NativeのEntryCount を33 → 34に変更
  • src/coreclr/vm/wasm/wasi/callhelpers-pinvoke.cpp: libSystem.Globalization.NativeのEntryCount を33 → 34に変更

パフォーマンスへの影響

影響なし

関連Issue

#130479(blocking-clean-ci)、#130140

その他

  • 根本原因:PR #130140で生成ファイルを手動編集し、テーブルに新しいエントリを追加しましたが、hard-codedされたEntryCountの更新を忘れていました。minipal_resolve_dllimportは線形探索でentries[0 .. count-1]をスキャンするため、count=33では34番目のエントリ(GlobalizationNative_ToUnicode)が不可到達となり、P/Invokeがnullに解決されていました。
  • GlobalizationNative_GetAscii(ToAscii、index 32)はカウント内にあるため、引き続きパスしていました。
  • 通常、テーブル長からcountを生成するため、手動編集後は再生成すべきでした。

#130529 Remove kg from area owners for interpreter

概要

.github/policies/resourceManagement.yml ファイルから kg をエリアオーナーのリストから削除する変更です。

変更内容

  • .github/policies/resourceManagement.yml: kg をインタープリタ(interpreter)のエリアオーナーから削除(1行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

なし


#130526 Fix intermittent teardown crash in the cDAC GC stress framework

概要

cDAC GC ストレステスト フレームワークにおけるプロセス終了時のクラッシュを修正します。arm/arm64 でのみ発生する exit 139 (SIGSEGV) エラーが、検証完了後の teardown フェーズで発生していました。根本原因は、バックグラウンドスレッドがまだメモリを割り当てている最中に CdacStressPolicy::Shutdown が共有リソースを解放するという競合状態です。修正では、Shutdown 時に s_cdacLock を保持して s_initialized をクリアし、VerifyAtStressPoint が同ロック下で再チェックして撤去中の状態への検証を防ぎます。

変更内容

  • src/coreclr/vm/cdacstress.cpp: Shutdown で s_cdacLock を保持しながら s_initialized をクリアし、VerifyAtStressPoint 内でロック下での再チェックを追加。これにより、EE シャットダウン中のバックグラウンドスレッドによる使用後解放(use-after-release)を防止します。
  • eng/pipelines/runtime-diagnostics.yml: パイプライン設定の軽微な更新。

パフォーマンスへの影響

影響なし。本修正は teardown ロジックの同期化に限定され、ストレステスト検証ロジック自体やランタイム動作に変更がありません。

関連Issue

#130447 から分割

その他

  • クラッシュは arm/arm64 環境のみで発生し、x64 では再現しません。x64 での 80 回連続実行テストでは、サマリ出力とともに正常に完了することを確認済みです。
  • 本修正は公開 API ではなく、cDAC ストレステスト フレームワークの内部実装のみに影響します。

#130511 [wasm] Bump helix V8 image and re-enable exnref CI legs (#129849)

概要

WASM向けHelix CI環境をexnref対応のV8 15.2.47にアップグレードし、exnref移行に伴い無効化されていたCI実行を再開します。また、V8自動アップデーターに最小バージョンガード機構を追加し、exnrefの最小要件バージョン以下への自動ダウングレードを防止します。

変更内容

  • Helix WebAssembly イメージのバージョンアップ:Linux用Helix WebAssemblyイメージをV8 15.2.47対応版に更新(eng/pipelines/coreclr/templates/helix-queues-setup.yml、eng/pipelines/libraries/helix-queues-setup.yml)
  • CI実行の再開:
    • wasm-runtime-tests.yml:Mono runtime tests on Helix再開(sendToHelix: false削除)
    • runtime-linker-tests.yml:トリミングテストV8実行再開(SkipTrimmingTestsRun=true削除)
    • runtime-wasm-perf.yml:パフォーマンス テストPR トリガー復活(pr: noneから変更)
    • runtime.yml:CoreCLR WasmTestOnV8スモークテスト再開
  • V8自動アップデーター強化(UpdateChromeVersions.cs):Chrome マイルストーン由来のV8がexnrefの最小要件バージョン(15.1.103)以下にダウングレードされるのを防止する最小バージョンガード機構を実装

パフォーマンスへの影響

影響なし

関連Issue

#129849、#129851、#130142

その他

Windows Helix環境とazurelinux buildコンテナはすでにV8バージョンが最新状態のため、変更なし。


#130498 Make comhost cache COM activation delegate info

  • 作成者: @elinor-fung
  • 作成日時: 2026年07月10日 16:08:04(UTC)
  • マージ日時: 2026年07月11日 01:48:33(UTC)
  • ラベル: area-Host

概要

comhostのDllGetClassObjectがCOM激活デリゲートを毎回解決していた問題を修正しました。hostfxrの読み込み、runtimeconfig.jsonの解析、セカンダリホストコンテキストの作成が毎回実行されていましたが、これらの入力値(comhostパスとruntimeconfig)はプロセス内で変わらないため、キャッシング機構を導入して1回限りの初期化で済ませるようにしました。

変更内容

  • src/native/corehost/comhost/comhost.cpp: COM激活デリゲート情報のプロセス/モジュール生存期間キャッシングを導入。com_activation_info構造体でキャッシュ状態(アプリパス、デリゲートポインタ、ロードコンテキスト)を保持し、get_com_activation_delegateヘルパー関数で初回初期化と以降のキャッシュ返却を実装。DllGetClassObjectをキャッシュされた激活状態を使用するように更新。

パフォーマンスへの影響

改善されます。COM激活の初回呼び出しでhostfxr読み込みとruntimeconfig.json解析が実行されますが、2回目以降は全ての呼び出しがキャッシュされた状態を使用するため、hostfxr読み込みと設定解析のオーバーヘッドが回避されます。複数のCOM激活呼び出しがある場合、スタートアップ時間と処理速度の顕著な改善が期待されます。

関連Issue

#130251

その他

なし


#124173 [Android] Respect platform trust manager in SslStream

概要

Android上のSslStreamがプラットフォームの信頼インフラストラクチャ(network_security_config.xmlを含む)を無視していた問題を修正します。DotnetProxyTrustManagerを改修し、プラットフォームのX509TrustManagerをラップするようにして、証明書ピニングやカスタム信頼アンカーが正しく機能するようになります。プラットフォームの検証結果と管理側の検証を組み合わせ、より厳格な評価を行います(プラットフォームが拒否した場合は管理側でもクリアできない)。

// RemoteCertificateValidationCallback は両方の検証結果の合併集合を受け取るようになります
// プラットフォーム拒否 → RemoteCertificateChainErrors がプリセットされます
// プラットフォーム受理 → 管理側の検証が独立して実行され、エラーが追加される可能性があります

変更内容

Java層(DotnetProxyTrustManager):

  • プラットフォームのX509TrustManagerをTrustManagerFactory経由で取得しラップ
  • X509TrustManagerExtensions.checkServerTrustedを使用してホスト名対応の検証を実施
  • chainTrustedByPlatformフラグをネイティブコールバックに渡す

ネイティブC層(pal_sslstream.c、pal_trust_manager.c、pal_jni.c):

  • SSLStreamCreateを単一関数に統合(targetHost、trustCerts、keyManagersを受け取る)
  • GetX509TrustManager()でプラットフォーム信頼マネージャーを返却、デフォルトインスタンスをJNIグローバル参照としてキャッシュ
  • VerifyRemoteCertificateの登録時に戻り値をキャプチャしNativeAOT対応を強化
  • 不要なApplyLegacyAndroidSNIWorkaroundと関連の削除
  • FreeSSLStreamの潜在的なSIGSEGV修正とJNIローカル参照リーク修正

管理側C#(SslStream.Android.cs、SslStream.IO.cs等):

  • VerifyRemoteCertificateがref SslPolicyErrorsを受け取るよう変更(呼び出し側が検証結果をプリセット可能)
  • GetTrustCertHandlesでカスタムルート証明書を収集
  • VerifyRemoteCertificate(bool chainTrustedByPlatform)でプラットフォーム検証結果に基づいてsslPolicyErrorsをプリセット

ビルドインフラ(AndroidAppBuilder):

  • NetworkSecurityConfigとNetworkSecurityConfigResourcesDirをサポート

パフォーマンスへの影響

プラットフォーム信頼マネージャーインスタンスをJNIグローバル参照としてキャッシュすることで、TrustManagerFactory.init(null)がハンドシェイク毎に呼ばれなくなります。これにより不要なJNI呼び出しが削減されます。

関連Issue

#107695、#126838

その他

動作変更: `CertificateChainPolicy


目次