Pull Request on 2026年10月07日

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

注意点

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


目次

  1. #135371 Revert "[mono][aot] Fix stack overflow normalizing self-referencing struct wrappers"
  2. #135370 Revert "Add SmtpClient.SslOptions for per-client TLS configuration"
  3. #135367 Distinguish unmanaged and managed KnownExternFunctions
  4. #135355 Add Array.GetValue and SetValue overloads taking ReadOnlySpan<int>
  5. #135351 Format net_ssl_io_cert_validation in TlsSession reject path
  6. #135344 Check CordbType class before accessing its metadata
  7. #135326 Allocate PreallocatedSentinelObject on frozen heap
  8. #135325 [release/11.0] JsonNamingPolicyAttribute: Add missing PascalCase
  9. #135324 Add support for WASM in Disassembler
  10. #135322 Improve HttpListener NTLM test failure diagnostics
  11. #135321 Skip robust mutexes on OpenHarmony
  12. #135319 Remove stale JIT_TrialAlloc declarations
  13. #135318 Cleanup dead code in coreclr
  14. #135315 [release/11.0] Enable class-level parallelism in Process tests
  15. #135307 JIT: Fold SequenceEqual self-comparisons with constant length
  16. #135306 Preserve eager registration for cached managed R2R helpers
  17. #135278 Reset SSE event type after an empty event block
  18. #135277 Avoid copying Activity tags and links when sampling
  19. #135273 Isolate HttpClient certificate validation tests from TLS resumption
  20. #135156 Add a CI check that the checked-in wasm CoreCLR call helpers are up to date
  21. #135112 [cDAC] Fix x86 transition-frame stack-pop handling
  22. #135032 Make KillOnParentExit handle Job hierarchy changes on Windows
  23. #135029 [mono][aot] Fix stack overflow normalizing self-referencing struct wrappers
  24. #134919 Add SmtpClient.SslOptions for per-client TLS configuration
  25. #134751 [release/11.0] [interpreter] Resolve open virtual delegates invoked through the shuffle thunk (wasm, Apple mobile)
  26. #134359 Preserve module initialization across ReadyToRun inlining
  27. #134199 Clarify NegotiateAuthentication completion semantics

#135371 Revert "[mono][aot] Fix stack overflow normalizing self-referencing struct wrappers"

  • 作成者: @jkotas
  • 作成日時: 2026年10月07日 22:07:14(UTC)
  • マージ日時: 2026年10月07日 22:17:04(UTC)
  • ラベル: area-Codegen-JIT-mono

概要

PR #135029で導入された「自己参照構造体ラッパーのスタックオーバーフロー正規化修正」をリバートします。この変更により、mono/aotコンパイラにおける関連する実装と対応するテストが削除されます。

変更内容

  • src/mono/mono/mini/mini-generic-sharing.c: 自己参照構造体ラッパーの正規化処理に関連するコード(39行削除、10行追加)
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/ValueTypeTests.cs: 対応するテストケース32行を完全削除

パフォーマンスへの影響

影響なし

関連Issue

#135029

その他

本PR はリバートであり、PR #135029で実装された修正を取り消すものです。リバートの理由や背景となる問題については、提供されたPR情報には記載されていません。


#135370 Revert "Add SmtpClient.SslOptions for per-client TLS configuration"

  • 作成者: @jkotas
  • 作成日時: 2026年10月07日 22:04:28(UTC)
  • マージ日時: 2026年10月07日 22:08:33(UTC)
  • ラベル: area-System.Net

概要

PR #134919で追加されたSmtpClient.SslOptionsプロパティをリバートするものです。このプロパティはクライアント単位でのTLS設定を可能にする機能でしたが、完全に削除されます。

変更内容

  • System.Net.Mail.cs: SslOptionsプロパティの公開APIシグネチャを削除
  • SmtpClient.cs: SslOptionsプロパティの実装(36行分)を削除
  • SmtpClient.Wasm.cs: WASM環境向けの実装を完全削除(8行)
  • SmtpConnection.cs: SslOptionsに関連する処理を削除し、既存のTLS処理ロジックを復元(43行の追加)
  • SmtpTransport.cs: SslOptionsに関連する引数渡しの処理を削除
  • テストファイル: SmtpClientTlsTest.csでSslOptionsに関するテストケース(110行)を削除、残りのテストは保持

パフォーマンスへの影響

影響なし

関連Issue

#134919

その他

このリバートにより、SmtpClientのTLS設定はプロパティレベルの設定(EnableSslなど)に限定され、クライアント単位でのカスタムTLS設定オプション指定機能は提供されません。


#135367 Distinguish unmanaged and managed KnownExternFunctions

概要

WebAssembly向けのAOT(Ahead-of-Time)コンパイラにおいて、外部関数(KnownExternFunctions)の呼び出し規約の定義を、一括してUnmanagedとするのではなく、関数ごとに区別する変更です。RyuJITの期待するシグネチャと実際の生成コードのシグネチャを一致させることが目的です。GCPollの処理で問題が発生したため、マネージド側でスタックポインタパラメータを自動追加できるようにマネージドに変更し、他の関数の要件も監査して対応されています。

変更内容

  • NodeFactory.cs: WebAssembly向けKnownExternノードへの一括Unmanagedフラグ適用を廃止
  • KnownExternFunctions.cs: 外部ヘルパー関数ごとのアンマネージド/マネージド属性の明示的な指定を追加
    • GCPoll等はマネージドとして指定(スタックポインタパラメータの自動追加を可能に)
    • Write Barrierとmemsetはアンマネージドとして指定(RyuJITの期待に合致)
    • 注記: BulkWriteBarrierSmallは誤ってマネージドとしてマークされており、Copilot指摘のとおり修正が必要

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本PRはCopilot Code Reviewの指摘により、BulkWriteBarrierSmallをアンマネージドに修正する必要があります。WebAssembly AOTコンパイルのシグネチャ整合性に関わる内部実装変更であり、公開APIには影響しません。


#135355 Add Array.GetValue and SetValue overloads taking ReadOnlySpan<int>

概要

Array.GetValueとArray.SetValueにReadOnlySpan<int>を受け取るオーバーロードを追加します。これにより、多次元配列へのアクセス時にヒープ割り当てを回避でき、stackalloc int[]を活用した高性能なシナリオに対応します。

// 新しいオーバーロード
public object? GetValue(params ReadOnlySpan<int> indices)
public void SetValue(object? value, params ReadOnlySpan<int> indices)

変更内容

  • System.Private.CoreLib/src/System/Array.cs: GetValueとSetValueのReadOnlySpan<int>オーバーロード実装を追加(12行追加)
  • System.Runtime/ref/System.Runtime.cs: 新しいシグネチャを公開API定義に追加(2行追加)
  • System.Runtime.Tests/System/ArrayTests.cs: 1次元配列、多次元配列(2D/3D)、ゼロ以外の下限境界、stackalloc、ランク不一致、境界検証を含む包括的なテストを追加(171行追加)

パフォーマンスへの影響

改善: 多次元配列要素へのアクセス時にヒープ割り当てを排除。従来のint[]パラメータを使用するオーバーロードは、新しいReadOnlySpan<int>オーバーロードに委譲されます。これにより、stackalloc int[]を活用した呼び出し側で完全なゼロ割り当てが実現します。

関連Issue

#125325

その他

  • 既存のGetValue(params int[])とSetValue(object?, params int[])は新しいReadOnlySpan<int>オーバーロードに委譲するよう更新されます(ヌル検証後)
  • 破壊的変更なし(既存APIとの完全互換性を維持)
  • Npgsqlなどのデータドライバやプール配列操作など、高性能シナリオでの利用を想定

#135351 Format net_ssl_io_cert_validation in TlsSession reject path

概要

TlsSession.SetRemoteCertificateValidationResultメソッドにおいて、証明書検証が拒否された際のAuthenticationExceptionメッセージが正しくフォーマットされていなかった問題を修正します。2つの分岐(_isHandshakeCompleteと_resumeAfterCertValidation)でSR.Formatを使用せずにリソース文字列を使用していたため、メッセージが{0}プレースホルダーのまま出力されていました。修正により、SslStreamと同様にSslPolicyErrorsでリソースをフォーマットするようになります。

変更内容

  • TlsSession.cs: SetRemoteCertificateValidationResultメソッド内の2箇所でSR.net_ssl_io_cert_validationをフォーマットする処理を追加(SR.Format(SR.net_ssl_io_cert_validation, sslPolicyErrors)に修正)
  • TlsSessionTests.cs: ServerSession_ExternalValidation_RejectsClientCert_ServerFaultsPostHocテストを更新し、サーバー側のAuthenticationExceptionメッセージがRemoteCertificateChainErrorsを含み、{0}プレースホルダーを含まないことをアサート

パフォーマンスへの影響

影響なし

関連Issue

#135349

その他

  • 修正前はメッセージが"The remote certificate is invalid according to the validation procedure: {0}"となっていました
  • Linux(OpenSSL 3.0.13)とWindows 11 x64で検証済み。macOSでは未検証
  • System.Net.Security機能テストはLinux x64で合格(OuterLoopテストは未実行)。Windows 11 x64ではSslStreamTlsResumeTests.DifferentEncryptionPolicy_NoResumeが1回失敗しましたが、複数回の個別実行では合格

#135344 Check CordbType class before accessing its metadata

概要

CordbType::GetStaticFieldValueメソッドにおいて、m_pClassがnullであるかのチェック前にそのメンバーにアクセスしていた問題を修正します。型の検証とnullチェックをメタデータ参照よりも前に移動することで、無効な型に対するクラッシュを防止し、代わりにE_INVALIDARGを返すようにしました。

変更内容

  • src/coreclr/debug/di/rstype.cpp: CordbTypeクラスのnullチェックとメタデータアクセスの順序を変更(+1/-2行)
    • 型検証とnull ガードをメタデータ参照より前に配置

パフォーマンスへの影響

影響なし

関連Issue

#135339

その他

本変更はデバッガインターフェース(Debugger Interface)のランタイム側実装に関する内部的な修正です。m_pClassの無効な状態に対する適切なエラーハンドリングにより、デバッガの安定性が向上します。


#135326 Allocate PreallocatedSentinelObject on frozen heap

  • 作成者: @jkotas
  • 作成日時: 2026年10月07日 06:18:53(UTC)
  • マージ日時: 2026年10月07日 22:17:30(UTC)
  • ラベル: area-VM-coreclr

概要

PreallocatedSentinelObjectをフローズンヒープに割り当てることで、通常のヒープ上のピン留めオブジェクト数とハンドル数を削減します。これによりメモリ管理をより効率化します。

変更内容

  • src/coreclr/vm/vars.hpp: PreallocatedSentinelObjectの宣言定義を変更(-3/+1行)
  • src/coreclr/vm/vars.cpp: 初期化ロジックを更新(+2/-2行)
  • src/coreclr/vm/appdomain.cpp: フローズンヒープへの割り当て処理を実装(+12/-6行)

パフォーマンスへの影響

  • ピン留めオブジェクトの減少により、GC時のメモリフラグメンテーション低減が期待されます
  • フローズンヒープ上の割り当てにより、通常のヒープ圧力が軽減されます
  • ハンドル数の削減によりハンドルテーブル管理のオーバーヘッド削減

関連Issue

なし

その他

これはランタイム内部実装(VM層)の変更であり、公開APIへの影響はありません。フローズンヒープはメモリレイアウト最適化技術の一部で、長期存続するオブジェクトの配置戦略を改善するものです。


#135325 [release/11.0] JsonNamingPolicyAttribute: Add missing PascalCase

概要

JsonNamingPolicyAttributeに新しく導入されたPascalCase命名ポリシーのサポートが不足していた問題を修正します。顧客から報告されたIssueを解決するための必須の機能追加です。

変更内容

  • System.Text.Json/Serialization/Attributes/JsonNamingPolicyAttribute.cs: PascalCase命名ポリシーのサポートを追加(1行追加)
  • System.Text.Json/tests/Common/PropertyNameTests.cs: 修正の動作確認用の機能テストを追加(1行追加)

パフォーマンスへの影響

影響なし

関連Issue

#135238(オリジナルPR)

その他

  • このPRはrelease/11.0ブランチへのバックポート版です
  • 回帰テストなし
  • リスク評価: 低(機能的で限定的な修正)

#135324 Add support for WASM in Disassembler

概要

WebAssembly(WASM)環境でのコンパイラコードブロックのデバッガビュー表示をサポートするため、Disassemblerに対応を追加しました。

変更内容

  • src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/Disassembler.cs: WASM環境でのディスアセンブラ機能の実装を追加(+27行、-3行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

本変更はAOT(Ahead-of-Time)コンパイラの内部ツール機能で、公開APIではなく内部実装の拡張です。デバッガでのコードブロックの可視化機能に関連する変更です。


#135322 Improve HttpListener NTLM test failure diagnostics

  • 作成者: @wfurt
  • 作成日時: 2026年10月07日 01:36:53(UTC)
  • マージ日時: 2026年10月07日 16:13:44(UTC)
  • ラベル: area-System.Net.Http

概要

HttpListener NTLM認証テストの診断情報を向上させるため、粗いNtlmHandshakeResult列挙型を、認証状態・HTTPステータス・失敗のハンドシェイク段階を保持する詳細な結果型に置き換えました。既存のextended-protection policy変更時のHTTP 401拒否要件は維持しており、間欠的なテスト失敗(#135190)の原因を特定しやすくしています。

変更内容

  • System.Net.HttpListener.Tests: NTLM認証テストの結果表示を改善
    • NtlmHandshakeResult列挙型をより詳細な結果構造に置き換え
    • アサーション出力を強化し、トークン作成・チャレンジ解析・コンテキストタイミング・最終応答のいずれの段階で失敗したかを識別可能に
    • extended-protection policy変更に関するHTTP 401検証ロジックは維持

パフォーマンスへの影響

影響なし(テストコード修正のみ)

関連Issue

#135190

その他

  • NativeAOT対応を含め、Windows Server 2019/RS5、Server 2022、Server 2025、Windows 11でHelix検証済み
  • ストレステスト(50インスタンス×200回)でも全て合格
  • 元のUnexpectedFailureは再現されていないため、期待動作の緩和は行わず、今後のCI実行で追加情報を活用して問題の絞り込みを支援

#135321 Skip robust mutexes on OpenHarmony

概要

OpenHarmony プラットフォームが robust mutex API(pthread_mutexattr_setrobust/pthread_mutex_consistent)をサポートしていないため、名前付きミューテックスでこれらのAPI呼び出しをスキップし、共有メモリベースの実装にフォールバックするよう変更します。OpenBSD/Haiku/Appleと同様の条件分岐を追加します。他のプラットフォームへの影響はありません。

変更内容

  • src/libraries/System.Private.CoreLib/src/System/Threading/NamedMutex.Unix.cs
    • OpenHarmony プラットフォーム判定を追加(OperatingSystem.IsOpenHarmony())
    • robust mutex API呼び出しをスキップする条件分岐を実装
    • 既存の OpenBSD/Haiku/Apple ガードと同じパターンに統一

パフォーマンスへの影響

影響なし

関連Issue

#135321、#132827、#134670

その他

  • 本PR は #132827 の一部として分割されたもの("named-mutex half")
  • 共有メモリ/TMPDIR ポーション関連の変更は #132827 で継続
  • #134670 で追加された OperatingSystem.IsOpenHarmony() ヘルパーを利用
  • 公開APIおよび他プラットフォームの動作に変更なし

#135319 Remove stale JIT_TrialAlloc declarations

  • 作成者: @Copilot
  • 作成日時: 2026年10月07日 00:02:32(UTC)
  • マージ日時: 2026年10月07日 05:49:51(UTC)
  • ラベル: area-VM-coreclr

概要

CoreCLR VM ヘッダーファイルから廃止された JIT_TrialAlloc の前方宣言とフレンド宣言を削除するクリーンアップです。

変更内容

  • src/coreclr/vm/methodtable.h: JIT_TrialAlloc の前方宣言・フレンド宣言を削除(2行削除)
  • src/coreclr/vm/object.h: JIT_TrialAlloc の前方宣言・フレンド宣言を削除(3行削除)
  • src/coreclr/vm/typedesc.h: JIT_TrialAlloc の前方宣言を削除(1行削除)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

この変更は内部実装の整理であり、公開APIには影響しません。削除される JIT_TrialAlloc はすでに廃止されていたもので、参照がないと判断された宣言の削除です。


#135318 Cleanup dead code in coreclr

概要

coreclrの各種コンポーネント(デバッグ、GC、ランタイムロジック等)に散在している未使用の関数定義、変数宣言、ヘッダー宣言を削除するクリーンアップです。合計277ファイル以上で約3,700行以上のデッドコードが削除されます。

変更内容

主な削除対象:

  • デバッグ機能: symbolinfo.cpp/h(1,500行以上)の未使用コード、process.cpp、rsthread.cpp、controller等の不要な関数・メンバー
  • GC関連: background.cpp、diagnostics.cpp、handletable、init.cpp等における未使用定義
  • その他: dbgutil、dbgipcevents、dbgtargetcontext等の未使用ヘッダー宣言
  • ビルド設定: mscordac_unixexports.src の不要なエクスポート削除

パフォーマンスへの影響

影響なし。(デッドコード削除のため、実行時パフォーマンスに直接的な変化なし)

関連Issue

なし

その他

  • 内部実装の整理(公開APIへの直接的な影響なし)
  • 複数レビュワーによる確認が行われている

#135315 [release/11.0] Enable class-level parallelism in Process tests

概要

Process テストスイートのクラスレベル並列化を有効化する変更。テスト実行時間の短縮と CI 予算枯渇の緩和を目的とした、テストのみの変更です。Windows/Linux では デフォルトの xUnit クラスレベル並列化を復元し、環境状態の影響を受けやすいテストを分離しました。macOS と一部の環境(Recent Mono x64、Checked CoreCLR arm64)ではテストのタイムアウト防止のため、アセンブリ全体のシリアライズ化を維持しています。

変更内容

  • AssemblyInfo.cs: クラスレベル並列化属性の追加(Windows/Linux)と環境別条件付け
  • Interop.cs: テスト間の相互干渉を防ぐためのインタラップ設定調整
  • ProcessStandardConsoleTests.cs: テストの分離と並列化対応コード追加(標準コンソール関連テスト)
  • ProcessStartInfoTests.cs: テストの分離と並列化対応コード追加(StartInfo 関連テスト)
  • ProcessTests.Unix.cs: Unix プラットフォーム固有のテスト分離
  • ProcessTests.Windows.cs: Windows プラットフォーム固有の並列化サポート追加
  • System.Diagnostics.Process.Tests.csproj: xUnit クラスレベル並列化設定を明示的に有効化

パフォーマンスへの影響

テスト実行時間が大幅に改善されました:

  • 改善前: CI タイムアウト状態
  • 改善後: 約 9 分での完了(ローカルテストでも確認済み)

リスク軽減のため、macOS および Recent Mono x64、Checked CoreCLR arm64 環境ではアセンブリレベルのシリアライズ化を継続し、並列化関連のタイムアウトを防止しています。

関連Issue

#135001(Process テストスイート実行予算枯渇) #135160(元の PR)

その他

  • リスク評価: Low
  • 回帰テスト: なし
  • リリース対象: .NET 11.0(release/11.0 ブランチ)
  • 性質: テストのみの変更。環境固有の並列化設定により互換性を保証しつつ、サポート環境でのパフォーマンス改善を実現する設計です。

#135307 JIT: Fold SequenceEqual self-comparisons with constant length

概要

SequenceEqualの自己比較時に定数長の場合でも最適化が適用されないバグを修正。equal-VN(値番号が等しい)チェックを定数長チェックの前に移動することで、定数長を持つ自己比較がtrueにコンパイル時折畳みされるようにしました。

変更内容

  • src/coreclr/jit/assertionprop.cpp: equal-VN最適化チェックの順序を変更。定数長判定前にequal-VN条件を評価するよう移動(+9/-9行)

パフォーマンスへの影響

コンパイル時最適化の改善により、定数長を持つSequenceEqual自己比較がコンパイル時にtrueに折畳みされるため、実行時の不要な比較が削減されます。ランタイムパフォーマンスの向上が見込まれます。

関連Issue

#134431

その他

Copilotレビューにて、コードジェン修正に対してHasDisasmCheckリグレッションテストの追加が推奨されています(低優先度)。


#135306 Preserve eager registration for cached managed R2R helpers

  • 作成者: @davidwrighton
  • 作成日時: 2026年10月06日 19:39:39(UTC)
  • マージ日時: 2026年10月07日 02:53:32(UTC)
  • ラベル: area-ReadyToRun

概要

ReadyToRun (R2R) コンパイラにおいて、キャッシュされたマネージドヘルパーの急速登録依存関係を保持する修正です。ヘルパーのキャッシュヒット時に登録追跡が失われていたため、ランタイムのスタックウォークが不正にフィルタリット関数と判定される問題を解決します。登録依存関係の追跡をキャッシュヒット時にも行うようにし、並列度1および2の両方でSystem.Threading.Thread.PollGCの急速メソッドエントリ登録をテストする回帰テストを追加します。

変更内容

  • src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs: キャッシュヒット時のヘルパー検索でも依存関係を記録(+7行)
  • src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs: 登録追跡をターゲット作成から分離し、すべてのマネージドヘルパー検索で実行(+15/-11行)
  • src/coreclr/tools/aot/ILCompiler.ReadyToRun.Tests/TestCases/R2RTestSuites.cs: Crossgen2並列度1および2でのPollGC急速登録検証テストを追加(+50行)
  • src/coreclr/tools/aot/ILCompiler.ReadyToRun.Tests/TestCasesRunner/TestPaths.cs: x86/x64テスト条件を追加(+2行)
  • src/coreclr/tools/aot/ILCompiler.ReadyToRun.Tests/TestCases/ManagedHelpers/HelperCalls.cs: 回帰入力フィクスチャを追加(+16行)

パフォーマンスへの影響

影響なし(登録追跡ロジックの移行であり、実行時性能は変わらない)

関連Issue

#135279

その他

  • ランタイムスタックウォークの正確性に関わる修正のため、Linux x64でのみ検証済み。Windowsおよびx86プラットフォームでの追加検証が推奨される(Copilotレビューの指摘)
  • 修正により、単一スレッド Crossgen2 フレームワークコンパイルでのEHCount > 0アサーション失敗が解決
  • すべての回帰テスト(149 パス、14 プラットフォーム固有スキップ、0 失敗)と R2R threading/generics サブセット(80 テスト)で検証完了

#135278 Reset SSE event type after an empty event block

  • 作成者: @MihaZupan
  • 作成日時: 2026年10月06日 15:04:35(UTC)
  • マージ日時: 2026年10月07日 14:39:21(UTC)
  • ラベル: area-System.Net

概要

SSE(Server-Sent Events)パーサーにおいて、event: フィールドを含むがデータがない空のイベントブロック後に、イベントタイプがリセットされずに次のイベントに流用される問題を修正します。HTML仕様に従い、終端の空白行でイベントタイプをリセットし、デフォルトの "message" 型を使用するようにします。id: および retry: の値は保持されます。

変更内容

  • SseParser_1.cs: イベントタイプをリセットするロジックを追加(+1行)
  • SseParserTests.cs: 空のイベントブロック後のイベントタイプリセット動作を検証するテストを追加(+19行)

パフォーマンスへの影響

影響なし

関連Issue

なし

その他

HTML仕様のServer-Sent Events事象ストリーム解釈に準拠した実装への変更です。これはバグ修正であり、仕様への準拠を強化するものです。


#135277 Avoid copying Activity tags and links when sampling

概要

ActivitySamplingResult.PropagationData が指定されて新しい Activity を作成する際、タグとリンクのコピーをスキップして パフォーマンスを最適化する変更です。特に9個のタグと1個のリンクを含む場合、メモリ割り当てが49~57%削減され、実行時間が45~51%短縮されます。

変更内容

  • Activity.cs: PropagationData サンプリング結果の場合、初期化時のタグ・リンク・サンプラータグのコピー処理を条件付きでスキップするように修正
  • ActivitySource.cs: PropagationData の場合にタグとリンクをコピーしない実装を追加(親フォーマット複数リスナー対応を含む)
  • ActivitySourceTests.cs: 修正されたサンプリング動作の網羅的なテストを新規追加(188行)

パフォーマンスへの影響

PropagationData サンプリング時に大幅な改善:

  • メモリ割り当て: 9タグ+1リンク時で 976B → 416B(43%削減)
  • 実行時間: 9タグ+1リンク時で 234.7ns → 116.0ns(51%短縮)
  • 9タグのみ: メモリ 848B → 416B(49%削減)、実行時間 211.2ns → 116.0ns(45%短縮)
  • AllDataAndRecorded サンプリング時は影響なし

関連Issue

#135007

その他

互換性への注意: PropagationData サンプリング時にActivityから削除されるタグとリンク(作成時に指定されたものおよびサンプラータグ)があります。Copilotレビューで指摘されているように、この動作変更はドキュメント更新が推奨されています。


#135273 Isolate HttpClient certificate validation tests from TLS resumption

  • 作成者: @rzikm
  • 作成日時: 2026年10月06日 12:38:00(UTC)
  • マージ日時: 2026年10月07日 09:06:30(UTC)
  • ラベル: area-System.Net.Http

概要

TLS再開始(セッション再開)時の証明書検証スキップに対応するため、HttpClientテストを分離します。PR #133174で導入されたTLS再開始のデフォルト動作により、セッションキャッシュが既存接続から生成されると、証明書検証やユーザー検証コールバックが実行されなくなります。このPRは既存のハンドラーヘルパーにallowTlsResumeオプションを追加し、検証に依存するテストでのみ完全ハンドシェイクを要求することで、テストの分離を実現します。公開APIやプロダクトコードの変更はなし。

変更内容

  • HttpClientHandlerTest.ServerCertificates.cs: allowTlsResumeオプションをハンドラーヘルパーに追加。証明書ポリシーテストや証明書拒否テストでオプションを明示的に設定。デフォルトビヘイビアとヘルパー署名は保持。
  • HttpClientHandlerTestBase.SocketsHttpHandler.cs: allowTlsResumeパラメータをハンドラーヘルパーに追加。SocketsHttpHandler.SslOptions.AllowTlsResumeに指定値を伝播。
  • HttpClientHandlerTestBase.WinHttpHandler.cs: WinHTTP固有の処理(ネイティブ動作の保持)。
  • SocketsHttpHandlerTest.cs: デフォルト値、true/false値の転送、および複数コールバック実行を網羅するテストカバレッジ追加。
  • その他ファイル: SslProtocols、Http3、WebSocketオプションテストの軽微な調整。

パフォーマンスへの影響

影響なし。テスト分離による組織的な変更で、実行時パフォーマンスに変化なし。

関連Issue

#133174(TLS再開始実装) #135083(SslStreamテスト分離)

その他

  • WinHTTPとネイティブモバイルハンドラーはAllowTlsResume設定を公開していないため、ネイティブ動作を保持。
  • HTTP/3テストはコールバックカバレッジをパス。QUIC は現在AllowTlsResumeを消費しないため、QUIC再開始の修正は対象外。
  • 検証はWindows x64、Release CoreCLR、Debugライブラリで実施。その他のプラットフォームとエンタープライズテストは未実施。
  • テスト結果:System.Net.Http機能テスト5,435件パス、ユニットテスト2,677件パス、WinHttpHandler機能テスト2,350件パス、ユニットテスト173件パス。外部証明書・プロトコルカバレッジ53件パス。

#135156 Add a CI check that the checked-in wasm CoreCLR call helpers are up to date

概要

WebAssembly向けのChecked-inされたCoreClr呼び出しヘルパーテーブルがマネージドコードと同期しているかをCI検証する機構を追加します。#134978でWASIにFEATURE_PERFTRACINGが有効化された際、テーブルが再生成されず、結果として起動時にGetUnmanagedCallersOnlyThunk: unknown thunkエラーで失敗していた問題に対応します。

変更内容

  • 生成スクリプト拡張(generate-coreclr-helpers.proj/.sh/.cmd):オプショナルなCallHelperTargetOSプロパティ(browserorwasi)を追加。既存スクリプトは-t/--target-osフラグで特定フレーバーのみ再生成可能に。デフォルトはRelease設定。
  • CI検証ステップ(新規:wasm-coreclr-callhelpers-check.yml):ポストビルドステップとしてhelperテーブルを再生成し、checked-inバージョンとの差分を検出。差分がある場合は詳細なdiffと修正コマンドを出力。既存のbrowser_wasm(Linuxのみ)とwasi_wasmビルドレッグに統合。
  • CI条件拡張:新規パス部分集合wasm_coreclr_callhelpersを追加。ライブラリのP/Invoke/QCall/[UnmanagedCallersOnly]関連変更(src/libraries/*/src/*、src/coreclr/System.Private.CoreLib/*、src/coreclr/tools/aot/ILCompiler.ReadyToRun/*等)で該当レッグが実行される。
  • ドキュメント:generate-coreclr-helpers.mdに--target-os、Releaseが正規設定であることを記載。
  • WASI テーブル再生成:Debug起動時の参照がReleaseに更新された。コメント3行が変更(System.Net.NameResolution→System.Private.CoreLibへの移行に伴う)。

パフォーマンスへの影響

影響なし

関連Issue

#134978、#133187

その他

互換性への影響: 内部実装変更(ビルドシステム/CI)。公開APIへの影響はなし。

既知の問題: Copilot reviewにより、Windows向けgenerate-coreclr-helpers.cmdのオプション解析に欠陥(target OS オプションラベル欠落、ヘルプ処理の不具合)が指摘されています。高重要度の修正推奨。

検証状況: macOS arm64での各種build設定(Release/Debug、Checked/Release CrossGen2)で動作確認済み。パイプラインYAML及びWindowsスクリプトの実行環境での動作は未検証。


#135112 [cDAC] Fix x86 transition-frame stack-pop handling

概要

Windows x86 cDAC(Compact Debugging Access Component)のスタックアンワインド処理で、ExternalMethodFrameがnull MethodDescで構築される際のスタックポップハンドリングの不具合を修正します。MethodDescがnullの場合、ReadyToRun import-slot GCRefMapから取得したスタックポップカウントを使用して正しく調整されるようになり、GC-referenceストレステスト中の間欠的なフレーム不整合(15フレーム中5フレームマッチ、7フレーム不整合)が解決されます。

変更内容

  • FrameHelpers.cs: ReadyToRun import-slot GCRefMapの参照解決ロジックを共有化。スタックポップカウント取得機能を新規追加
  • X86FrameHandler.cs: ExternalMethodFrameとStubDispatchFrameのハンドラを修正。GCRefMapから取得したスタックポップカウントをMethodDesc処理の前に使用するように変更(67行追加、18行削除)
  • GcScanner.cs: GCRefMap参照解決ロジックをFrameHelpersに移行(80行削除)
  • StackWalkTests.cs: フレームタイプ、スタックポップカウント(0と非0)、拡張カウント符号化、マップ優先度、署名フォールバック、レジスタ/コンテキスト復元を網羅する15個の新規回帰テストを追加
  • StackWalk.md: x86スタックポップ調整をStackWalkコントラクト仕様に文書化

パフォーマンスへの影響

影響なし

関連Issue

#135085

その他

テスト検証結果:

  • 製品修正なし時:新規15テストケース中10個が予想通り失敗、5個がパス
  • 製品修正適用時:全15テストがパス
  • cDAC単体テスト全3,255テストがパス(スキップなし)
  • release win-x86 NativeAOT cDAC発行成功
  • 元の失敗していたCI testhost(Checked x86ランタイム+Release ライブラリ)でcDACのみ置換した検証:10個の独立したBasicAllocストレスプロセスが49,592回の比較を実行(49,590パス、2失敗)。7フレーム喪失エラーは発生せず

本変更は内部実装(cDACのスタックアンワイン機構)への修正で、公開APIへの影響はありません。


#135032 Make KillOnParentExit handle Job hierarchy changes on Windows

概要

Windows上でKillOnParentExitプロセス作成時にJob hierarchy(ジョブオブジェクトの階層構造)の変更に対応するよう改善しました。キャッシュされたJob Objectが互換性を失った場合に新しいJob Objectで再試行し、アクティブな子プロセスを保持している前のJobを保持しながら、非アクティブなJobを適切にクローズするリソース管理を実装しています。

変更内容

  • SafeProcessHandle.Windows.cs:プロセス作成時のJob Object置き換えロジックを実装。互換性のないキャッシュ済みJobでアクセス拒否エラーが発生した場合、新しいJob Objectを使用して再試行します。ProcessUtils.s_processStartLockを使用した同期機構により、正常系の同時実行プロセス起動は保持されます。前のJobがアクティブな子プロセスを含む場合は保持し、非アクティブなJobはクローズしてJOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSEにより既存の子プロセスを確実に終了させます。

  • Interop.JobObjects.cs:Job Object会計情報クエリ用のInterop定義を追加(19行)。

  • KillOnParentExitTests.cs:通常起動・サスペンド起動、複数Job内の子プロセスライフタイムのリグレッション検証テストを追加(116行)。

パフォーマンスへの影響

影響なし(正常系の同時実行プロセス起動パスは保持される)。ただし、Job置き換え時の再試行に伴う若干のオーバーヘッド、および複数Job保持による一時的なメモリ増加の可能性があります。

関連Issue

#134990

その他

Copilotレビューで低優先度の改善提案あり:同時リカバリー中に冗長なJobが生成される可能性があり、reader-lock パスの回帰テスト追加が推奨されています。テスト結果は693テスト中全てパスしています。


#135029 [mono][aot] Fix stack overflow normalizing self-referencing struct wrappers

概要

Mono AOTコンパイラ(mono-aot-cross)で自己参照する構造体フィールドを持つジェネリック構造体を処理する際に無限再帰が発生し、スタックオーバーフロー(終了コード -1073741571)が発生していた問題を修正しました。

以下のような構造体で問題が発生していました:

public struct Box<T> { public object? O; }
public struct Self { public Box<Self> F; }

public static class Calls
{
    public static T Id<T>(T value) => value;
    public static Self Call(Self value) => Id(value);
}

変更内容

  • src/mono/mono/mini/mini-generic-sharing.c: get_wrapper_shared_vtype()とget_wrapper_shared_type_full()で、正規化中の構造体チェーンをスタック上で追跡するように修正。既に処理中の構造体が再度到達した場合はNULLを返し、元の型を保持。最大深度16の制限を追加して無限再帰を防止。
  • src/libraries/System.Runtime/tests/System.Runtime.Tests/System/ValueTypeTests.cs: ValueTypeTests.StructWithSelfReferencingGenericFieldPassedToGenericMethodTestテストケースを追加(自己参照・相互参照構造体への対応を検証)。

パフォーマンスへの影響

影響なし。修正は無限再帰の防止であり、正常系のパフォーマンスに変更はありません。

関連Issue

#132071

その他

  • テスト環境: Debug mono-aot-cross(Webアセンブリ AOT向け)で検証
  • テスト結果: System.Runtime.Tests(System.Tests.ValueTypeTests)23/23合格
  • 本修正により、Blazor再現事例を含む複数のアセンブリでスタックオーバーフローが解決

#134919 Add SmtpClient.SslOptions for per-client TLS configuration

  • 作成者: @rzikm
  • 作成日時: 2026年09月30日 09:49:41(UTC)
  • マージ日時: 2026年10月07日 12:13:27(UTC)
  • ラベル: area-System.Net

概要

SmtpClient.SslOptionsプロパティを実装し、アプリケーションがプロセス全体の設定に依存せずにクライアント単位でSMTP TLS設定を構成できるようにします。SslClientAuthenticationOptionsは遅延初期化され、同期・非同期のTLS認証に使用されます。TargetHostがnullの場合は現在のSMTPホストにデフォルト設定されます。SslOptionsの割り当ては常にキャッシュされた接続を無効化しますが、ネストされたコレクションの埋め込み編集は無効化しません。

変更内容

  • SmtpClient.cs: SslOptionsプロパティを追加し、SslClientAuthenticationOptionsの初期化・管理と接続キャッシュ無効化ロジックを実装
  • SmtpConnection.cs: グローバルServicePointManager設定への依存を削除し、接続固有のSslClientAuthenticationOptionsコピーを使用するようにTLS認証処理を変更
  • SmtpTransport.cs: SslOptions割り当て時の接続再初期化ロジックを追加
  • System.Net.Mail.cs: SslOptionsプロパティのリファレンスAPI定義を追加
  • SmtpClient.Wasm.cs: WASI未サポートプラットフォーム向けのスタブ実装を追加
  • テストファイル: 全3つのSend API、オプションのデフォルト値、証明書検証、ターゲットホスト、TLSプロトコル/ALPN選択、接続再利用・再割り当て、送信中の割り当て、グローバルTLS設定からの独立性をカバーする110行の新規テストを追加

パフォーマンスへの影響

影響なし

関連Issue

#120965

その他

破壊的変更: SMTP TLSはServicePointManager.SecurityProtocol、ServerCertificateValidationCallback、CheckCertificateRevocationListを使用しなくなります。アプリケーションはSslOptions.EnabledSslProtocols、RemoteCertificateValidationCallback、CertificateRevocationCheckModeに移行する必要があります。EnableSslはSTARTTLSの制御を継続します。ClientCertificatesプロパティは廃止されず、SslOptions.ClientCertificatesにフォワードされます。

テスト結果: Windows環境で518機能テストと411単位テストが全てパス(失敗・スキップなし)。非Windowsランタイム実行は未実施。


#134751 [release/11.0] [interpreter] Resolve open virtual delegates invoked through the shuffle thunk (wasm, Apple mobile)

概要

オープン仮想デリゲートが、プラットフォーム側で動的コード生成をサポートしていない環境(browser-wasm、iOS、tvOS、macCatalyst)で、コンパイル済みコード(R2R/JIT)から呼び出された際にクラッシュする問題を修正。インタープリタのINTOP_CALLI命令にCID_VirtualOpenDelegateDispatchの特別処理を追加し、デリゲートとthis引数からターゲットを解決するようにします。

変更内容

  • interpexec.cpp: インタープリタのINTOP_CALLIにCID_VirtualOpenDelegateDispatchを認識する処理を追加。ResolveOpenVirtualDelegateTargetヘルパー関数を新規追加し、INTOP_CALLDELEGATEと同じ解決ロジックを使用。
  • comdelegate.cpp: ResolveOpenVirtualDelegateTargetヘルパー関数の実装追加。
  • DelegateTests.cs: オープン仮想デリゲートの呼び出しをテストする新規テストケース追加(クラスのオーバーライド、ボックス化された構造体、列挙型、インターフェースディスパッチ)。

パフォーマンスへの影響

影響なし。既存のINTOP_CALLDELEGATEと同じ解決コードを使用しており、ターゲットがCID_VirtualOpenDelegateDispatchの場合のみ新規パスが実行されるため。

関連Issue

#134261、#134699、#134733、#134720

その他

  • リグレッション: .NET 10でmono runtimeを使用した際は動作していたが、.NET 11で発生する問題。
  • 顧客影響: CoreCLR(iOS、tvOS、macCatalyst)およびbrowser-wasm ReadyToRunでプロセスがクラッシュ。MethodInfo.CreateDelegate<Func<object, string>>()でのオープン仮想デリゲート呼び出しやLINQ式が影響を受けます。
  • テスト結果: macCatalyst-arm64およびbrowser-wasm上で実施済み。本修正適用により新規テストも含めすべてのテストが成功。
  • リスク評価: 低い。新規処理は特定のシナリオでのみ実行され、既存の解決ロジックを再利用しているため。

#134359 Preserve module initialization across ReadyToRun inlining

  • 作成者: @Copilot
  • 作成日時: 2026年09月21日 18:30:18(UTC)
  • マージ日時: 2026年10月07日 22:36:47(UTC)
  • ラベル: area-ReadyToRun

概要

Composite ReadyToRun(AOT)でのクロスモジュール インライン化により、別のアセンブリのモジュール初期化子の呼び出しが削除され、実行されないという問題を修正します。例えば、UnsafeAccessorを使用する場合、プライベートフィールドの書き込みが行われない状況が発生していました。

グローバルモジュールの TypeHandle fixupを保持してモジュール初期化子の実行を確保し、バージョン間での互換性も保証する修正です。

変更内容

  • JIT インターフェース層: CorInfoImpl.ReadyToRun.csでクロスモジュール インライン後の fixup保持ロジックを追加(14行追加)
  • VM層: jitinterface.cppで fixup関連の処理を追加(5行追加)
  • トークンリゾルバー: ModuleTokenResolver.csでグローバルモジュール型のトークン処理を改善
  • Signature生成: SignatureBuilder.csと TypeFixupSignature.csで version resilience対応のトークン処理を調整
  • テストランナー: R2RTestRunner.csにテストケースを追加
  • 回帰テスト: UnsafeAccessor、モジュール初期化子、RVAフィールドを含む複数のテスト用アセンブリを追加(FieldLibrary、InitializerLibrary、RvaFieldLibrary、ValueTypeLibraryなど)

パフォーマンスへの影響

影響なし。本修正はコレクトネスの問題であり、global-moduleの TypeHandle fixupを保持することで、インライン化の安全性を確保します。

関連Issue

#134283

その他

  • Version resilience対応:バージョン バブル外での安定した TypeDefトークン使用を許可し、通常トークンのチェックは保持
  • テストケースは生成されたアセンブリ参照を含み、activation fixupのデコーディングが可能な設計

#134199 Clarify NegotiateAuthentication completion semantics

  • 作成者: @Copilot
  • 作成日時: 2026年09月18日 14:47:25(UTC)
  • マージ日時: 2026年10月07日 18:08:08(UTC)
  • ラベル: area-System.Net

概要

NegotiateAuthentication クラスのXMLコメントドキュメントを改善し、IntelliSenseで表示される内容を明確化しました。認証完了のセマンティクスを正確に記述し、開発者が正しく理解できるようにしています。

主な改善点:

  • IsAuthenticated が交換完了を示すことを明確化(成功ではなく)
  • GetOutgoingBlob のステータスコードを参照するよう指示
  • TargetName から誤解を招く IsAuthenticated への参照を削除

変更内容

  • src/libraries/System.Net.Security/src/System/Net/Security/NegotiateAuthentication.cs
    • IsAuthenticated プロパティのXMLドキュメントを更新し、交換完了のセマンティクスを明確化
    • TargetName プロパティのドキュメントから誤解を招く記述を削除
    • GetOutgoingBlob のステータスコード参照に関するドキュメントを追加
    • 公開プロパティドキュメント全体の表現を改善(+16/-3)

パフォーマンスへの影響

影響なし(ドキュメント変更のみ)

関連Issue

なし

その他

  • Copilot reviewerより、ContinueNeeded ステータスをプロセス中の交換として明確に説明する必要があるとの指摘あり
  • この変更は dotnet/dotnet-api-docs#12724 からのドキュメント改善をポートしたもの

目次