Pull Request on 2026年09月05日

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

注意点

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



#133308 Enable browser WASM R2R tests in manual pipeline

概要

#133294で削除されたブラウザWASM CoreCLR R2R_CG2ランタイムテストレグを復元し、障害調査の間は手動パイプライン(runtime-wasm-non-libtests)でのみ有効にします。このレグは/azp run runtime-wasm-non-libtestsコマンドでキューイングでき、デフォルトのruntimeパイプラインからは除外されます。

変更内容

  • eng/pipelines/runtime-wasm-non-libtests.yml: runR2RTests: trueを設定して、このWASM手動パイプラインでR2Rレグを有効化
  • eng/pipelines/extra-platforms/runtime-extra-platforms-wasm.yml: runR2RTestsパラメータ(デフォルト値false)を追加し、このパラメータが有効な場合にのみR2R_CG2のビルド・テストジョブをゲート

パフォーマンスへの影響

影響なし

関連Issue

#133294

その他

  • Copilotレビューから指摘:runtime-wasm-non-libtestsの手動専用意図を明確にするため、パイプラインYAML内でpr: noneを明示的に設定してPRトリガーを無効化することが推奨されています。現在の設定ではtrigger: noneのみで、PRトリガーが誤ってアクティブ化された場合、PR更新時に自動的にR2Rレグが実行される可能性があります。

#133298 Ensure CI scan issues always get the KBE label

概要

CI失敗スキャナーが作成するすべてのIssueに「Known Build Error」ラベルを自動的に付与するよう設定を変更します。これにより、KBEワークフロー自動化とci-failure-fixクエリが正常に機能することを保証します。

変更内容

  • .github/workflows/ci-failure-scan.md: safe-outputs.create-issue.labelsにデフォルトラベルとして「Known Build Error」を追加し、ラベリングガイダンスを更新
  • .github/workflows/ci-failure-scan.lock.yml: コンパイル済みワークフロー設定を再生成し、KBEラベルの自動付与を反映

パフォーマンスへの影響

影響なし

関連Issue

#132559、#132560(KBEラベルなしで作成された問題)

その他

  • この変更は破壊的変更ではなく、ラベリング一貫性の改善です
  • スキャナーは引き続き各失敗に対してblocking-clean-ciまたはblocking-clean-ci-optionalのいずれか1つを選択します
  • ワークフロー設定ファイルに強制されるため、個別のcreate_issueリクエストでラベルが含まれているかどうかに関わらず、KBEラベルが確実に適用されます

#133295 Disable Runtime_133209 narrowing cast test on Mono

  • 作成者: @Copilot
  • 作成日時: 2026年09月05日 07:07:29(UTC)
  • マージ日時: 2026年09月05日 21:48:48(UTC)
  • ラベル: area-Infrastructure

概要

MonoランタイムでRuntime_133209.CheckedNarrowingCast_WithNarrowedOperandテストが予期しないOverflowExceptionで失敗している問題に対応し、Mono上でのみこのテストをスキップするように修正します。CoreCLRおよび他のランタイムではテストは有効のままです。

[SkipOnMono("https://github.com/dotnet/runtime/issues/100368")]
public void CheckedNarrowingCast_WithNarrowedOperand()
{
    // テスト実装
}

変更内容

  • src/tests/JIT/Regression/JitBlue/Runtime_133209/Runtime_133209.cs
    • CheckedNarrowingCast_WithNarrowedOperandメソッドに[SkipOnMono]属性を追加
    • トラッキングIssue(#100368)へのリンクを含める
    • Mono以外のランタイムでのテスト実行には影響なし

パフォーマンスへの影響

影響なし

関連Issue

#133293(このPRで解決) #100368(Monoの根本的な問題のトラッキング)

その他

  • 既存のSkipOnMono属性の使用パターンに従った最小限の変更
  • テストの実装自体は変更されていない
  • Mono固有の問題による一時的な回避策であり、根本的な修正は#100368で追跡される予定

#133294 Disable browser WASM R2R test leg

概要

#133134で導入されたブラウザ WASM R2R_CG2 テストレグをCI パイプラインから無効化するもの。他の変更は保持される。CI で過度な数の失敗が発生しており、それを速急に停止する必要があるため。

変更内容

  • eng/pipelines/runtime.yml: ブラウザ WASM R2R_CG2 ランタイムテストレグを Azure Pipelines ランタイムマトリックスから削除。readyToRun: true と displayNameArgs: R2R_CG2 を設定していた innerloop ランタイムテストジョブ設定を削除。既存の browser_wasm innerloop ランタイムテストジョブ(非R2R)とそのパス条件は変更なし。

パフォーマンスへの影響

影響なし(CI レグの無効化のみ)

関連Issue

#133134

その他

なし


#133289 Adding DisableRuntimeMarshalling.cs to inbox assemblies with interop

概要

インタロップコードを含むinbox アセンブリに対して、共有の DisableRuntimeMarshalling.cs ファイルをリンクして、[DisableRuntimeMarshalling] 属性を一貫して適用するための変更です。複数のライブラリプロジェクトでこの共有属性ファイルをコンパイル対象に追加しています。

変更内容

  • System.IO.Compression - DisableRuntimeMarshalling.cs をリンク
  • System.Net.Primitives - DisableRuntimeMarshalling.cs をリンク
  • System.Net.WebSockets - DisableRuntimeMarshalling.cs をリンク
  • System.Runtime.InteropServices.JavaScript - browser ターゲットビルド限定で DisableRuntimeMarshalling.cs をリンク

すべての変更は各プロジェクトファイル(.csproj)で $(CommonPath)DisableRuntimeMarshalling.cs を Compile 項目として追加するもので、既存パターンに従っています。

パフォーマンスへの影響

影響なし

関連Issue

#131877

その他

  • 変更は最小限の範囲に留まっており、既存の共有属性ファイルをプロジェクトにリンクするパターンに従っています
  • 新しいAPI表面や動作コードの変更は導入されていません
  • インタロップコード関連のassembly属性の一貫性向上を目的とした整理です

#133287 Revert "[mono][interp] Preserve nullable boxing for GetType"

概要

PR #132732で導入された「Mono interpreterにおけるnullable boxingの保持」最適化を revert します。この変更により、interpreter内での box + GetType() パターン最適化がnullable型に対して再度適用されるようになり、併せて対応する回帰テストが削除されます。

変更内容

  • src/mono/mono/mini/interp/transform.c: box+GetType()のpeephole最適化におけるnullable型ガード条件を削除し、nullable型も最適化対象に戻す
  • src/tests/JIT/Directed/nullabletypes/gettype.cs: 非[OuterLoop]の回帰テスト(boxed nullable型のGetType()セマンティクスを検証)を削除し、[OuterLoop]テストのみ残存

パフォーマンスへの影響

影響なし(revert による機能的な改善/低下は想定されないが、nullable型のbox+GetType()パターン最適化が有効化される)

関連Issue

  • #133287 (本PR)
  • #132732 (revert対象)
  • #133207 (貢献先Issue、新テストが複数CoreCLR legで失敗中)

その他

Copilot レビュー指摘:revert により Nullable<T>.GetType() の動作が observable に変更され、innerloop回帰カバレッジが削除されるため、今後この領域での回帰リスクが増加する可能性あり。


#133284 Disable flaky ExceptionHandling PAL test on osx-arm64

  • 作成者: @Copilot
  • 作成日時: 2026年09月05日 01:19:54(UTC)
  • マージ日時: 2026年09月05日 06:44:51(UTC)
  • ラベル: area-VM-coreclr

概要

osx-arm64環境でPAL(Platform Abstraction Layer)テストのpaltest_pal_sxs_test1が頻繁に失敗(終了コード137)しているため、このテストをosx-arm64でスキップするよう除外リストに追加するテスト安定化対応です。

変更内容

  • src/coreclr/pal/tests/palsuite/issues.targets: exception_handling/pal_sxs/test1/paltest_pal_sxs_test1をosx-arm64環境専用で除外するエントリを追加(+5行)。既存のPALテスト除外メカニズムに従い、TargetOS=osxとTargetArchitecture=arm64の条件付きで構成。

パフォーマンスへの影響

影響なし(テスト実行スキップのため、パフォーマンス測定対象外)

関連Issue

#122345

その他

  • 変更は既確立されたPALテスト除外メカニズムに準拠した狭い範囲の修正
  • 追跡用Issueへのリンクが含まれており、将来の復旧が容易
  • osx-arm64固有の不安定性に対する一時的な対応

#133266 [wasm] Recognize R2R virtual IPs in IsManagedCode

概要

WebAssemblyでのReadyToRun(R2R)仮想命令ポインタが、スタックウォーク時に不正にネイティブコードに分類される問題を修正。ExecutionManager::IsManagedCodeWorkerが仮想IPを既存の仮想範囲ルックアップ(FindCodeRange)にルーティングするように改善し、マネージドfunctlet呼び出し元の誤分類を防止。ネストされたfinallyブロック内のGCスタックウォーク時のアサーション失敗(fFrameWasUnwound)を解決。

変更内容

  • src/coreclr/vm/codeman.cpp: IsManagedCodeWorkerのwasm実装を修正し、仮想IPをFindCodeRange経由でルーティング。ネイティブアドレスは既存のGetRangeSectionと包括的なロック状態処理を保持。登録済み仮想範囲は既存のR2Rメソッドチェック(デッドロック安全な早期リターンを含む)をそのまま使用。
  • src/tests/JIT/Methodical/eh/basics/tryfinallytryfinally.cs: ネストされたfinallyのリグレッションテストを追加。通常呼び出しと例外エントリの両経路、明示的なGC、予期された例外処理、GC後の配列値を検証。

パフォーマンスへの影響

影響なし。既存ルックアップパスの再利用により、実行時パフォーマンスへの悪影響は想定されない。

関連Issue

#133264

その他

  • 対象プラットフォーム: WebAssemblyランタイムのみの変更(wasm-only)
  • 検証: browser-wasm Checkedランタイム向けの検証完了。新規テストケース2つと既存テスト(Test_throwinfinallynestedintry_30_cs)でパス確認
  • 互換性: 内部VM実装の修正であり、公開APIへの影響なし
  • 依存関係: JIT変更を含まず、他の未解決EH関連修正(条件付きEH-fallthrough、post-catchマネージド協調モード復元)とは独立

#133260 Deduplicate "all managed object wrappers" mapping

概要

"all managed object wrappers"診断テーブルに重複したエントリが登録されるのを防ぐ変更です。同一のManagedObjectWrapperHolderが複数回登録されるのを抑制し、リスト肥大化を防ぎます。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs
    • 診断追跡テーブルにマネージドオブジェクトラッパーを登録する際に、Containsチェックを追加してから挿入する処理を実装
    • 同一のラッパーが繰り返し登録されるのを防止

パフォーマンスへの影響

影響なし。DAC/cDACとの互換性を保つため既存の構造を維持しており、パフォーマンス特性に変更はありません。むしろ重複登録によるリスト肥大化を防ぐことで、メモリ効率が向上します。

関連Issue

#129191

その他

  • この修正は診断ツール(!DumpObjコマンドなど)がマネージドオブジェクトラッパーを列挙する際に使用するテーブルに対するもの
  • DAC/cDAC互換性が要件であるため、HashSet導入など構造的な変更は見送られ、シンプルな重複チェックアプローチが採用されました
  • 実運用では通常1つのComWrappersインスタンスのみが使用される想定のため、この軽量な修正で十分対応可能

#133253 Update CoreclrTestWrapperLib to use diagnostics IPC for hang dump collection

  • 作成者: @tommcdon
  • 作成日時: 2026年09月04日 18:25:12(UTC)
  • マージ日時: 2026年09月05日 14:21:06(UTC)
  • ラベル: area-Infrastructure

概要

CoreCLR テストラッパーのタイムアウト時クラッシュダンプ収集をLinux/Unix系プラットフォームで createdump 直接呼び出しから .NET診断IPC(Unix domain socket)経由に変更しました。タイムアウト報告の構造を再整理し、診断出力をテスト出力に含められるようにしています。

変更内容

  • CoreclrTestWrapperLib.cs: 非Windows環境でのダンプ収集ロジックを GenerateCoreDump3 診断IPCメッセージリクエストに置き換え
  • 診断IPC用のUnix domain socketクライアント実装を追加
  • タイムアウト処理時のダンプ収集ログをメモリ内ライター(TextWriter)にルーティングし、プロセス終了後にテスト出力に追記
  • ダンプ収集ヘルパーを汎用化し StreamWriter から TextWriter を受け付けるように変更

パフォーマンスへの影響

IPC経由のダンプ要求にはタイムアウトが設定されますが、Copilotレビューで指摘の通り、現在の実装ではタイムアウト時に無制限の待機またはCI実行時間の大幅延長リスクがあります。Best-effortベースで有界のタイムアウトに限定する必要があります。

関連Issue

なし

その他

懸念事項(Copilotレビューより):

  1. 新しいタイムアウトパスで無制限待機・長いIPCタイムアウトが発生し、CI実行時間の著しい延長またはハング可能性あり
  2. 診断IPC socketプロービングと複数socket処理に正確性の問題があり、特定環境でダンプ収集が不要に失敗する可能性
  3. TMPDIR環境変数が存在しつつディレクトリが欠落/アクセス不可の場合、即座に失敗し、失敗メッセージで検索対象ディレクトリが特定されないため、CI環境デバッグが困難

#133249 [release/11.0] Improve PemEncoding.TryFind perf with degenerate inputs

概要

PemEncoding.TryFindメソッドがデジェネレート入力(例:"-----"など無効なBase64文字列)に対して過度なCPU時間を消費していた問題を修正するパフォーマンス改善です。アルゴリズムの最適化により、無効な入力の処理速度が10倍以上向上しました。

変更内容

  • PemEncoding.cs(2箇所): TryFindメソッドのアルゴリズムを最適化し、無効なBase64データの検証処理を効率化(+52行/-19行)
  • PemEncodingFindTests.cs(2箇所): デジェネレート入力に対するパフォーマンステストを追加(各ファイルで+63~68行)

変更はMicrosoft.Bcl.CryptographyとSystem.Security.Cryptographyの両ライブラリに適用されています。

パフォーマンスへの影響

デジェネレート入力(無効なPEM形式)に対する処理速度が10倍以上高速化されました。既存の正常系処理への回帰はなく、機能は変わりません。

関連Issue

#133137(本PR #133249 はこちらの release/11.0 へのバックポート)

その他

  • 顧客報告による問題の修正
  • 既存テストで回帰がないことを確認済み
  • リスク評価: Low(テストカバレッジが十分)
  • 内部実装の最適化で、公開APIの変更なし

#133227 Use rolling internal Windows queue for helix_windows_x64_latest_internal

概要

廃止されたHelix キュー Windows.11.Amd64 への参照を、ローリングキュー Windows.Amd64.rt に更新するもの。これにより、内部Windows x64 Helix レグ(runtime-coreclr superpmi-collect含む)が「Helix API does not contain an entry for Windows.11.Amd64」エラーで失敗する問題を解決します。内部の最新キューを、既に公開キューで使用されているローリングパターンに統一します。

変更内容

  • eng/pipelines/helix-platforms.yml: helix_windows_x64_latest_internal キューの定義を Windows.11.Amd64 から Windows.Amd64.rt(内部用ローリングキュー)に変更

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

  • 廃止されたキュー名への参照は、確認対象フォルダ内に残っていません
  • 公開キュー用の helix_windows_x64_latest で既に使用されている Windows.Amd64.Open.rt と対応する内部ローリングキューへの統一により、CI/CDパイプラインの一貫性が向上します

#133164 Add ComWrappers RCW cache concurrency tests, and fix an RCW being handed out before it can be resolved

概要

ComWrappers RCWキャッシュの並行性をカバーするテストを9つ追加し、キャッシュからの取得時にラッパーがまだ登録されていない状態のRCWが返される競合状態を修正します。修正により、キャッシュ参照が公開される前にs_nativeObjectWrapperTableへの登録が完了することが保証され、ComWrappers.TryGetComInstanceが失敗する競合ウィンドウが解消されます。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs

    • RCWキャッシュ参照が返される際に、ラッパーがs_nativeObjectWrapperTableに登録されているかを検証
    • 登録完了前の参照は未登録として扱い、キャッシュミスを返すように変更
    • キャッシュ参照の検証用にラッパー情報を内部ヘルパーを通じて提供
    • ラッパーを登録完了後に返すようマーク
  • src/tests/Interop/COM/ComWrappers/API/Program.cs

    • キャッシュ競合を対象とした9つの並行テストを追加
    • シナリオ:複数スレッドが同一COMインスタンスのキャッシュミス時、個別スレッドのオブジェクト登録レース、参照トラッカー登録、キャッシュエントリの発行/読取/削除、ファイナライザーと同時実行される検証など

パフォーマンスへの影響

影響なし(軽微な改善)

シナリオ main 本PR 変化
lookup, 1 instance 69.3 ns 68.9 ns -0.6%
lookup, 64 instances 74.4 ns 75.1 ns +0.9%
lookup, 1024 instances 81.0 ns 81.2 ns +0.2%
create, 4000 fresh instances 563.5 ns 550.5 ns -2.3%

修正の実行コスト:参照パス上で1回の予測可能なフィールド読取と、稀な競合ウィンドウでの追加CreateObject呼び出し。mainでのベンチマーいずれも測定可能な範囲内の変動。

関連Issue

#133164

その他

互換性への影響: 公開API変更なし(内部実装の修正のみ)

セキュリティおよび信頼性:

  • mainでは同一RCWに対する16スレッドの競合テストで、8000回の試行中37~47回の失敗が発生。本修正適用後は0回に改善。
  • 検証:ComWrappers APIスイート全31テストが9回連続で成功(チェック済みランタイム)。main では同一テストが9回中9回失敗。

既知の制限: Copilotレビューで指摘された複数項目の対応が必要:

  • Barrier.SignalAndWait(TimeSpan)のタイムアウト結果を無視する箇所がある
  • 一部テストのnullable型の宣言が不適切
  • 参照同一性検証にAssert.Equalを使用している

#133153 [release/11.0] Avoid xcodebuild probe error without Xcode

概要

macOS上でXcodeをインストールせず、Command Line Toolsのみを使用している環境でNativeAOT アプリの公開に失敗する問題を修正しました。xcodebuild --versionの実行時に発生するエラー出力をMSBuildが標準エラーとして認識し、ビルドが失敗していたため、IgnoreStandardErrorWarningFormatプロパティを設定してエラーを無視するように対応しています。

変更内容

  • src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets: xcodebuildプローブにIgnoreStandardErrorWarningFormatプロパティを追加し、標準エラー出力を無視するように修正(+1/-1)

パフォーマンスへの影響

影響なし

関連Issue

#100189(9.0時代に同様の問題を修正) #123386(回帰を引き起こしたPR)

その他

  • このは回帰修正です。PR #123386でclang --versionからxcodebuild --versionへの変更が導入され、Xcode未インストール環境でビルドが失敗するようになりました
  • 修正方法は既にcrossgen-corelib.projとMicrosoft.NET.CrossGen.targetsで採用されている同等のプローブと整合させています
  • リスク評価は低く、他の箇所で実施されているエラー出力の無視と同じ対応方式です

#132920 Avoid shared-file races in parallel CoreCLR builds

概要

Windows上での並行CoreCLR ビルド時に発生する共有ファイルアクセスの競合を解決するPRです。Python発見時の一時ファイル共有を廃止し、MSVC PGOデータベースをビルドツリー内にコピーしてファイル共有違反を回避します。複数のdotnet/runtimeリポジトリを同時にビルドする際の不安定性を改善します。

変更内容

  • src/coreclr/build-runtime.cmd: %TEMP%\pythonlocation.txtへの共有一時ファイル書き込みを廃止し、for /fを使用したインプロセスPython発見に変更
  • src/tests/run.cmd: テスト実行時のPython発見において、同様に共有一時ファイル使用を排除
  • src/coreclr/pgosupport.cmake: MSVC PGOデータベースファイルをビルド出力ツリーへコピーするよう変更し、リンク時のWindows共有違反を回避

パフォーマンスへの影響

影響なし(ビルド安定性の向上が主目的。並行ビルド時のエラー削減による間接的な効率化の可能性あり)

関連Issue

#45423 #46018

その他

  • ビルドシステム(CoreCLR)とテストランナーの両方で共有ファイルの問題に対応
  • Release clr.runtimeビルドと2つの並行isolated Release JITビルドで検証済み
  • Windows環境固有の修正

#132725 [release/11.0] Fix ComWrappers ICustomQueryInterface exception handling

概要

ComWrappers経由でCOMに公開される.NETオブジェクトのICustomQueryInterface実装で例外が発生した際の例外処理の改善です。例外時の戻り値をHandled (0)からFailedToInvoke (-1)に修正し、ネイティブ側でのnullポインタ処理とアサーション失敗を防止します。

変更内容

  • src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreCLR.cs
    • CallICustomQueryInterfaceメソッドの例外処理パスで、戻り値をdefault (0 = Handled)から-1 (FailedToInvoke)に修正
    • マネージドコード側のICustomQueryInterface.GetInterface実装で例外が発生した場合、ネイティブ側に正しく失敗として報告されるように修正

パフォーマンスへの影響

影響なし

関連Issue

#132716(メインブランチへのプルリクエスト) 回帰元:#125697

その他

  • リスク度: Low
  • 検出方法: Outerloop テスト
  • 回帰: PR #125697で回帰
  • 互換性: 内部実装の修正であり、公開APIへの影響なし
  • テスト: Outerloop テストで検出済み

目次