注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #133308 Enable browser WASM R2R tests in manual pipeline
- #133298 Ensure CI scan issues always get the KBE label
- #133295 Disable Runtime_133209 narrowing cast test on Mono
- #133294 Disable browser WASM R2R test leg
- #133289 Adding DisableRuntimeMarshalling.cs to inbox assemblies with interop
- #133287 Revert "[mono][interp] Preserve nullable boxing for GetType"
- #133284 Disable flaky ExceptionHandling PAL test on osx-arm64
- #133266 [wasm] Recognize R2R virtual IPs in IsManagedCode
- #133260 Deduplicate "all managed object wrappers" mapping
- #133253 Update CoreclrTestWrapperLib to use diagnostics IPC for hang dump collection
- #133249 [release/11.0] Improve PemEncoding.TryFind perf with degenerate inputs
- #133227 Use rolling internal Windows queue for helix_windows_x64_latest_internal
- #133164 Add ComWrappers RCW cache concurrency tests, and fix an RCW being handed out before it can be resolved
- #133153 [release/11.0] Avoid xcodebuild probe error without Xcode
- #132920 Avoid shared-file races in parallel CoreCLR builds
- #132725 [release/11.0] Fix ComWrappers ICustomQueryInterface exception handling
#133308 Enable browser WASM R2R tests in manual pipeline
- 作成者: @lewing
- 作成日時: 2026年09月05日 17:38:50(UTC)
- マージ日時: 2026年09月05日 22:15:03(UTC)
- ラベル: arch-wasm area-Infrastructure-mono os-browser
概要
#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
その他
- Copilotレビューから指摘:
runtime-wasm-non-libtestsの手動専用意図を明確にするため、パイプラインYAML内でpr: noneを明示的に設定してPRトリガーを無効化することが推奨されています。現在の設定ではtrigger: noneのみで、PRトリガーが誤ってアクティブ化された場合、PR更新時に自動的にR2Rレグが実行される可能性があります。
#133298 Ensure CI scan issues always get the KBE label
- 作成者: @vitek-karas
- 作成日時: 2026年09月05日 09:27:32(UTC)
- マージ日時: 2026年09月05日 17:14:48(UTC)
- ラベル: area-Infrastructure
概要
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
- 作成者: @Copilot
- 作成日時: 2026年09月05日 07:05:27(UTC)
- マージ日時: 2026年09月05日 15:40:05(UTC)
- ラベル: area-Infrastructure-mono
概要
#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
その他
なし
#133289 Adding DisableRuntimeMarshalling.cs to inbox assemblies with interop
- 作成者: @Copilot
- 作成日時: 2026年09月05日 03:35:09(UTC)
- マージ日時: 2026年09月05日 22:12:58(UTC)
- ラベル: area-System.Runtime.InteropServices
概要
インタロップコードを含む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
その他
- 変更は最小限の範囲に留まっており、既存の共有属性ファイルをプロジェクトにリンクするパターンに従っています
- 新しいAPI表面や動作コードの変更は導入されていません
- インタロップコード関連のassembly属性の一貫性向上を目的とした整理です
#133287 Revert "[mono][interp] Preserve nullable boxing for GetType"
- 作成者: @jkotas
- 作成日時: 2026年09月05日 03:03:31(UTC)
- マージ日時: 2026年09月05日 07:11:15(UTC)
- ラベル: area-Codegen-Interpreter-mono
概要
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
その他
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
その他
- 変更は既確立されたPALテスト除外メカニズムに準拠した狭い範囲の修正
- 追跡用Issueへのリンクが含まれており、将来の復旧が容易
- osx-arm64固有の不安定性に対する一時的な対応
#133266 [wasm] Recognize R2R virtual IPs in IsManagedCode
- 作成者: @lewing
- 作成日時: 2026年09月04日 21:37:28(UTC)
- マージ日時: 2026年09月05日 02:01:55(UTC)
- ラベル: arch-wasm area-VM-coreclr
概要
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
その他
- 対象プラットフォーム: 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
- 作成者: @jkoritzinsky
- 作成日時: 2026年09月04日 20:37:42(UTC)
- マージ日時: 2026年09月05日 05:29:08(UTC)
- ラベル: area-System.Runtime
概要
"all managed object wrappers"診断テーブルに重複したエントリが登録されるのを防ぐ変更です。同一のManagedObjectWrapperHolderが複数回登録されるのを抑制し、リスト肥大化を防ぎます。
変更内容
- src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs
- 診断追跡テーブルにマネージドオブジェクトラッパーを登録する際に、
Containsチェックを追加してから挿入する処理を実装 - 同一のラッパーが繰り返し登録されるのを防止
- 診断追跡テーブルにマネージドオブジェクトラッパーを登録する際に、
パフォーマンスへの影響
影響なし。DAC/cDACとの互換性を保つため既存の構造を維持しており、パフォーマンス特性に変更はありません。むしろ重複登録によるリスト肥大化を防ぐことで、メモリ効率が向上します。
関連Issue
その他
- この修正は診断ツール(
!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レビューより):
- 新しいタイムアウトパスで無制限待機・長いIPCタイムアウトが発生し、CI実行時間の著しい延長またはハング可能性あり
- 診断IPC socketプロービングと複数socket処理に正確性の問題があり、特定環境でダンプ収集が不要に失敗する可能性
- TMPDIR環境変数が存在しつつディレクトリが欠落/アクセス不可の場合、即座に失敗し、失敗メッセージで検索対象ディレクトリが特定されないため、CI環境デバッグが困難
#133249 [release/11.0] Improve PemEncoding.TryFind perf with degenerate inputs
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月04日 17:05:18(UTC)
- マージ日時: 2026年09月05日 02:12:47(UTC)
- ラベル: Servicing-approved area-System.Security
概要
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
- 作成者: @jakobbotsch
- 作成日時: 2026年09月04日 07:58:13(UTC)
- マージ日時: 2026年09月05日 09:27:39(UTC)
- ラベル: area-CodeGen-coreclr
概要
廃止された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
- 作成者: @Sergio0694
- 作成日時: 2026年09月03日 12:42:45(UTC)
- マージ日時: 2026年09月05日 05:24:55(UTC)
- ラベル: area-System.Runtime.InteropServices community-contribution
概要
ComWrappers RCWキャッシュの並行性をカバーするテストを9つ追加し、キャッシュからの取得時にラッパーがまだ登録されていない状態のRCWが返される競合状態を修正します。修正により、キャッシュ参照が公開される前にs_nativeObjectWrapperTableへの登録が完了することが保証され、ComWrappers.TryGetComInstanceが失敗する競合ウィンドウが解消されます。
変更内容
src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs
- RCWキャッシュ参照が返される際に、ラッパーが
s_nativeObjectWrapperTableに登録されているかを検証 - 登録完了前の参照は未登録として扱い、キャッシュミスを返すように変更
- キャッシュ参照の検証用にラッパー情報を内部ヘルパーを通じて提供
- ラッパーを登録完了後に返すようマーク
- RCWキャッシュ参照が返される際に、ラッパーが
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
その他
互換性への影響: 公開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
- 作成者: @github-actions[bot]
- 作成日時: 2026年09月03日 08:22:26(UTC)
- マージ日時: 2026年09月05日 01:39:58(UTC)
- ラベル: Servicing-approved area-NativeAOT-coreclr
概要
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
- 作成者: @EgorBo
- 作成日時: 2026年08月29日 16:02:52(UTC)
- マージ日時: 2026年09月05日 11:02:18(UTC)
- ラベル: area-Infrastructure-coreclr
概要
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
その他
- ビルドシステム(CoreCLR)とテストランナーの両方で共有ファイルの問題に対応
- Release
clr.runtimeビルドと2つの並行isolated Release JITビルドで検証済み - Windows環境固有の修正
#132725 [release/11.0] Fix ComWrappers ICustomQueryInterface exception handling
- 作成者: @github-actions[bot]
- 作成日時: 2026年08月24日 23:24:19(UTC)
- マージ日時: 2026年09月05日 01:38:33(UTC)
- ラベル: Servicing-approved area-VM-coreclr
概要
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 テストで検出済み