注意点
このページは、dotnet/runtimeリポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
目次
- #128153 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'
- #128119 [cdac] Move DataType from Abstractions to Contracts
- #128118 Fix NativeAOT dependent handle secondary access with standalone GC
- #128115 Fix doubling of rental for PKCS#8 exports in PQC and X25519
- #128112 [ci-scan] Skip System.Formats.Nrbf.Tests on Mono CI
- #128103 Port more coreclr holders to the LifetimeHolder<Traits> pattern
- #128093 Merging internal commits for release/8.0
- #128092 Merging internal commits for release/9.0
- #128084 Add note clarifying TLS use in HttpListener
- #128073 JIT: Eagerly invalidate GC state for registers trashed by linker relaxation sequences
- #128059 Fix ConstructorInfo.GetGenericArguments to return empty array
- #128042 Delete ICorDebugProcess11
- #128023 [release/10.0] Port dump collection perf improvements
- #128022 [release/8.0] Port dump collection perf improvements
- #128021 Update Native AOT documentation
- #127962 Add
Bundler.ComputeBundleContentstoMicrosoft.NET.HostModel - #127949 Arm64:[PAC-RET] Instruction encodings
- #127935 Build wasm JIT and crossgen2 R2R of System.Private.CoreLib for browser target
- #127901 [release/9.0-staging] Update dependencies from dotnet/icu
- #127891 Update gcc leg from v15 to v16
- #127843 Fix a series of possible race conditions in thread static variable initialization
- #127837 [release/9.0] Update dependencies from dotnet/emsdk
- #127835 [release/8.0] Update dependencies from dotnet/emsdk
- #127778 [cDAC] Implement SetDebugState for cDAC
- #127757 [clr-interp] Report async-suspension locals to the debugger via GetAsyncLocals
- #127754 [clr-interp] Skip RSLock leak assert for DbgTransportTarget on Unix
- #127572 Fix additional issue to support >1024 CPUs
- #126782 Propagate actual error info when loading a TPA assembly fails with
FileNotFoundException - #126520 [cDAC] Add interpreter support for stack walking and diagnostics
- #126136 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'
- #126058 [automated] Merge branch 'release/8.0' => 'release/8.0-staging'
- #125945 [release/9.0-staging] Update dependencies from dotnet/xharness
- #125704 [release/8.0-staging] Update dependencies from dotnet/icu
- #125478 [Android] Fix DNS localhost subdomain resolution with IPv6 on Android
- #125098 [release/10.0] Update dependencies from dotnet/icu
#128153 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'
- 作成者: @github-actions[bot]
- 作成日時: 2026年05月13日 16:42:59(UTC)
- マージ日時: 2026年05月13日 19:06:08(UTC)
- ラベル: Servicing-approved area-codeflow
概要
release/9.0ブランチからrelease/9.0-stagingブランチへの自動マージPRです。6人のコントリビューターによる変更(バージョン更新、依存関係の更新、System.Formats.Tar関連の修正を含む)をマージします。
変更内容
- NuGet.config: NuGetパッケージソース設定の更新
- eng/Version.Details.xml、eng/Versions.props: 依存ライブラリのバージョン情報の更新(50行規模の変更)
- System.Formats.Tar: TarEntry.cs、TarHeader.Read.csにおける実装修正(7行の追加)
- TarFile.ExtractToDirectory.File.Tests.Windows.cs: Windows環境向けのテストケース追加(21行)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRはボット自動生成の定期マージPRです。マージは自動ではなく、手動でマージコミット(squashやrebase不可)を作成する必要があります。マージコンフリクトが発生した場合は手動で解決してください。
#128119 [cdac] Move DataType from Abstractions to Contracts
- 作成者: @max-charlamb
- 作成日時: 2026年05月13日 05:42:28(UTC)
- マージ日時: 2026年05月13日 23:41:39(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(Common Data Access Component)の型メタデータ処理を再構築するもので、DataType enum を Abstractions から Contracts アセンブリに移動し、Target.GetTypeInfo() の API を DataType ベースから文字列ベースに変更します。これにより、型記述子スキーマを Contracts に集約し、Abstractions は抽象 Target API に専念できるようになります。
変更の要点:
Target.GetTypeInfo(DataType)→Target.GetTypeInfo(string typeName)に置き換えDataTypeTargetExtensions.GetTypeInfo(this Target, DataType)拡張メソッドで互換性を維持Target.FieldInfo.Typeフィールドを削除、TypeName(文字列) を唯一の識別子に統一ContractDescriptorTargetの型ストレージをDictionary<string, Target.TypeInfo>に単一化
変更内容
- Microsoft.Diagnostics.DataContractReader.Abstractions/Target.cs: 抽象メソッド
GetTypeInfoをDataTypeからstring typeNameパラメータに変更、FieldInfo.Typeを削除 - Microsoft.Diagnostics.DataContractReader.Contracts/DataType.cs:
DataTypeTargetExtensions.GetTypeInfo()拡張メソッドを追加し、DataTypeから文字列オーバーロードへの転送を実現 - ContractDescriptorTarget.cs: 型キャッシュを
Dictionary<string, TypeInfo>に統一し、enum パース処理を削除 - テストインフラ更新:
TestPlaceholderTargetのビルダーでDictionary<DataType, ...>を受け取り内部的に文字列キーに変換、テストコードでFieldInfo.Type設定を削除 - TargetTestHelpers.cs: 未使用の
SizeOfTypeInfoヘルパーを削除
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 単一の文字列キー辞書への移行により、型情報の管理が簡潔化
- 新しい公開API
DataTypeTargetExtensions.GetTypeInfo()が追加されており、Copilot のコメント指摘通り API レビュー承認が必要な可能性あり - 単体テスト 2041/2041 がパス、ダンプテストは保留中
#128118 Fix NativeAOT dependent handle secondary access with standalone GC
- 作成者: @jbevain
- 作成日時: 2026年05月13日 05:01:08(UTC)
- マージ日時: 2026年05月13日 14:40:18(UTC)
- ラベル: community-contribution area-NativeAOT-coreclr
概要
NativeAOT環境下で、dependent handle(従属ハンドル)のセカンダリオブジェクトへのアクセスを、CoreCLRのグローバルヘルパー関数からIGCHandleManagerインターフェース経由に変更しました。これにより、standalone GC有効時にハンドルマネージャーの抽象化を一貫して使用できるようになり、ハンドルの所有者がstandalone GCの場合でも正確にセカンダリオブジェクトにアクセスできます。
変更内容
- src/coreclr/nativeaot/Runtime/HandleTableHelpers.cpp
RhHandleGetDependent: セカンダリオブジェクト取得時にGetDependentHandleSecondary(handle)からGCHandleUtilities::GetGCHandleManager()->GetDependentHandleSecondary(handle)へ変更RhHandleSetDependentSecondary: セカンダリオブジェクト設定時にSetDependentHandleSecondary(handle, secondary)からGCHandleUtilities::GetGCHandleManager()->SetDependentHandleSecondary(handle, secondary)へ変更
パフォーマンスへの影響
影響なし。内蔵GCハンドルマネージャーでは、マネージャー実装が内部的に同じCoresCLRヘルパーに転送するため、既存の動作が保持されます。
関連Issue
なし
その他
この修正はstandalone GC対応の一貫性を確保するものです。RhpHandleAllocDependentは既にアクティブなIGCHandleManagerを経由してdependent handlesを作成していたため、同じマネージャー抽象化を使用してセカンダリオブジェクトアクセスも行う必要がありました。
#128115 Fix doubling of rental for PKCS#8 exports in PQC and X25519
- 作成者: @vcsjones
- 作成日時: 2026年05月13日 03:08:48(UTC)
- マージ日時: 2026年05月13日 19:35:32(UTC)
- ラベル: area-System.Security
概要
PKCS#8秘密鍵エクスポート時のバッファリサイズロジックの修正。MLKem、MLDsa、SlhDsa、X25519DiffieHellmanクラスで、CryptoPool.Rentがリクエストサイズより大きなバッファを返した場合に、次の再試行で実際に取得したバッファサイズに基づいてリサイズするように修正。これにより、TryExportPkcs8PrivateKeyCoreに毎回同じサイズのバッファが渡される問題を解決します。
変更内容
- MLDsa.cs、MLKem.cs、SlhDsa.cs、X25519DiffieHellman.cs:PKCS#8エクスポートの再試行ループで、バッファが不足した場合に
size = buffer.Lengthを設定してから倍にし、次のRent呼び出しで実際の確保サイズに基づくリサイズを実行するように修正(各ファイル+1行) CompositeMLDsaは既に正しい実装を持つため変更なし
パフォーマンスへの影響
影響なし(バッファリサイズの不要な反復呼び出しを削減するため、むしろ効率化される)
関連Issue
その他
- 既存の単体テスト
ExportPkcs8PrivateKey_Resizesで同一サイズでの重複呼び出しがないことを検証 - 内部実装の修正(公開APIへの影響なし)
#128112 [ci-scan] Skip System.Formats.Nrbf.Tests on Mono CI
- 作成者: @github-actions[bot]
- 作成日時: 2026年05月13日 01:49:04(UTC)
- マージ日時: 2026年05月13日 19:24:27(UTC)
- ラベル: area-System.Formats.Nrbf agentic-workflows agentic-threat-detected
概要
System.Formats.Nrbf.Tests テストアセンブリが Mono CI で一貫してタイムアウトするため、Mono ランタイムでの CI 実行から除外する設定を追加します。Windows x64 Release ビルドの Mono (MonoJIT/MonoInterpreter) 環境での実行をスキップします。
変更内容
- src/libraries/System.Formats.Nrbf/tests/System.Formats.Nrbf.Tests.csproj
$(RuntimeFlavor) == 'Mono'条件付きで<IgnoreForCI>プロパティを追加- Mono CI 環境でのテストアセンブリのアーカイブ・実行を防止
パフォーマンスへの影響
影響なし。CI パイプラインの実行時間短縮(Mono CI レグでタイムアウト待機時間が削減)
関連Issue
その他
なし
#128103 Port more coreclr holders to the LifetimeHolder<Traits> pattern
- 作成者: @AaronRobinsonMSFT
- 作成日時: 2026年05月12日 22:13:50(UTC)
- マージ日時: 2026年05月13日 05:51:46(UTC)
- ラベル: area-VM-coreclr
概要
CoreCLR内部のリソース管理パターンを、レガシーなHolder/Wrapper/SpecializedWrapperから統一されたLifetimeHolder<Traits>パターンへ移行するPR。HModuleHolder、ResetPointerHolder<T>、CoTaskMemHolder<T>、StubHolder<T>、ExceptionHolderの5つのホルダーを新パターンに移植し、対応するコールサイトをそれぞれ更新。例外処理マクロ(EX_RETHROW、GET_EXCEPTIONなど)のセマンティクスも新パターンに統一。
変更内容
inc/holder.h—LifetimeHolder<Traits>ベースの新ホルダー定義を追加、レガシーヘルパー(ZeroMem、DeleteCoTaskMem、StubRelease、Exception__Delete)を削除inc/ex.h—ExceptionHolderをレガシー実装からLifetimeHolder<ExceptionTraits>に置き換え、デッドコード(#if 1 / #elseブロック)を削除vm/clrex.h— 例外ホルダーのマクロ内部(GET_EXCEPTION、EX_RETHROW)を新API仕様に対応vm/threads.cpp、vm/stublink.cpp、vm/stubcache.cpp、vm/eetoprofinterfaceimpl.cpp、utilcode/util.cpp— ホルダーのコンストラクタ呼び出しとメソッド呼び出しをレガシーパターン(Assign()、Clear()、Extract()、SuppressRelease())から新パターン(operator=、Free()、Detach())に更新debug/di/module.cpp、debug/di/process.cpp、debug/di/rspriv.h— DACメタデータコピー処理の呼び出し形態を新ホルダーAPI対応に調整
API マッピング(レガシー → LifetimeHolder)
| レガシー | 新API |
|---|---|
Assign(v) |
operator=(v) |
Clear() |
Free() |
Extract() / SuppressRelease() |
Detach() |
HolderType x = expr; |
HolderType x{ expr };(コンストラクタはexplicit) |
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 本PRはGitHub Copilotの支援を受けて作成(詳細は PR description参照)
- 内部実装の変更であり、公開APIへの影響なし
- 各コミットは個別のホルダー移植を分離する形で構成
#128093 Merging internal commits for release/8.0
- 作成者: @vseanreesermsft
- 作成日時: 2026年05月12日 19:52:35(UTC)
- マージ日時: 2026年05月13日 02:01:16(UTC)
- ラベル: Servicing-approved area-Infrastructure
概要
release/8.0ブランチの内部コミットをマージするPRです。System.Formats.Tarの抽出処理のセキュリティを強化し、Windows上でのシンボリックリンク検証とPAX拡張属性の負の値チェックを追加、MsQuic Schannel依存関係をバージョンアップします。
変更内容
- TarEntry.cs: Windows上でシンボリックリンク抽出時に、ルート化されているが完全修飾されていないターゲットパスを検証・拒否する処理を追加
- TarHeader.Read.cs: PAX拡張属性から読み込んだ
size値が負の値の場合に例外をスロー - TarFile.ExtractToDirectory.File.Tests.Windows.cs: ルート化されたシンボリックリンク拒否のリグレッションテストを追加(Windows専用)
- Versions.props:
MicrosoftNativeQuicMsQuicSchannelVersionを2.4.17から2.4.18にバージョンアップ
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
セキュリティ関連の修正として、Tar抽出中の入力検証が厳密化されています。特にWindows環境でのシンボリックリンク処理の安全性向上と、不正なヘッダメタデータ(負の値)の検出が強化されています。
#128092 Merging internal commits for release/9.0
- 作成者: @vseanreesermsft
- 作成日時: 2026年05月12日 19:47:53(UTC)
- マージ日時: 2026年05月13日 11:42:26(UTC)
- ラベル: Servicing-approved area-System.Formats.Tar
概要
.NET 9.0向けのセキュリティ強化PRです。System.Formats.Tarの圧縮ファイル抽出時に、Windowsのシンボリックリンクターゲット検証とPAX拡張属性のサイズ検証を厳格化し、パストラバーサル攻撃を防ぎます。あわせてMsQuic Schannel依存関係をバージョンアップします。
変更内容
- TarEntry.cs: Windows環境でルート指定されているが完全修飾されていないシンボリックリンクターゲット(抽出先から逸脱する可能性がある)を拒否するバリデーション処理を追加
- TarHeader.Read.cs: PAX拡張属性の
sizeフィールドが負の値の場合に例外をスロー - TarFile.ExtractToDirectory.File.Tests.Windows.cs: 不安全なルート化シンボリックリンクターゲットが正しく拒否されることを検証するリグレッションテストを追加
- eng/Versions.props: MsQuic Schannel パッケージを2.4.18にバージョンアップ
パフォーマンスへの影響
影響なし(セキュリティバリデーション追加のため、抽出時に軽微なバリデーションオーバーヘッドが増加する可能性がありますが、定量的な影響はなし)
関連Issue
なし
その他
- この変更は内部ビルドからのマージであり、セキュリティ強化が目的です
- Tar抽出時の安全性が向上し、特にWindows環境でのパストラバーサル攻撃リスクが低減します
- 破壊的変更: 以前は許可されていた不正なシンボリックリンクターゲットやPAX属性が新たに拒否されるため、該当するTarファイルの抽出が失敗するようになります
#128084 Add note clarifying TLS use in HttpListener
- 作成者: @wfurt
- 作成日時: 2026年05月12日 16:48:42(UTC)
- マージ日時: 2026年05月13日 04:11:40(UTC)
- ラベル: documentation area-System.Net
概要
HttpListenerのTLS実装に関する説明コメントを追加するドキュメント更新です。管理対象のHttpListener TLSコードパスが現在実質的に到達不可能である理由と、CA5359の抑制理由を明確化するコメントを追加しました。
変更内容
- src/libraries/System.Net.HttpListener/src/System/Net/Managed/HttpConnection.cs
secureコンストラクタパス内のSslStream生成および CA5359抑制ブロックに説明コメント追加(+5行)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
ドキュメント改善のみの変更です。コード動作への影響はありません。
#128073 JIT: Eagerly invalidate GC state for registers trashed by linker relaxation sequences
- 作成者: @jakobbotsch
- 作成日時: 2026年05月12日 12:17:27(UTC)
- マージ日時: 2026年05月13日 07:58:14(UTC)
- ラベル: area-CodeGen-coreclr
概要
NativeAOTにおけるTLSアクセスの最適化で、リンカーによる命令の再最適化(リラクゼーション)とJIT GC状態管理の不一致を修正します。JITが遅延的にGC状態を更新する仕様が、リンカーが予定より早くレジスタを上書きする場合に不正な動作を引き起こしていたため、特定の命令パターンでGC状態を先制的に更新するよう改めます。linux-x64とlinux-arm64に対応します。
変更内容
- src/coreclr/jit/emitxarch.cpp:
INS_data16TLSマーカーバイト出力時にRAXのGC生存性を先制的にクリア - src/coreclr/jit/emitarm64.cpp: TLSGD
adrpリロケーション出力時にx0のGC生存性を先制的にクリア - src/coreclr/jit/codegenxarch.cpp: CodeGen層で
RAXのGC状態クリアをミラーリング - src/coreclr/jit/codegenarmarch.cpp: CodeGen層で
x0のGC状態クリアをミラーリング
パフォーマンスへの影響
影響なし。本修正は正確性の向上であり、パフォーマンス特性に変化をもたらしません。
関連Issue
その他
- 修正は内部実装(JIT コンパイラのGC追跡メカニズム)に限定され、公開APIへの影響なし
- 非破壊的変更:既存の動作を修正するもので、互換性上の問題なし
- 変更パターンは両アーキテクチャで対称的に適用(x64:
RAX、arm64:x0) - 提供されたx64コード差分例では、GC状態更新(
gcrRegs -[rax])がリンカーリラクゼーション領域の前に移動されており、修正内容を明確に示しています
#128059 Fix ConstructorInfo.GetGenericArguments to return empty array
- 作成者: @steveisok
- 作成日時: 2026年05月12日 00:48:56(UTC)
- マージ日時: 2026年05月13日 02:32:29(UTC)
- ラベル: area-System.Reflection
概要
ConstructorInfo.GetGenericArguments()の動作を修正しました。CLRではコンストラクタはジェネリックメソッドではないため、このメソッドは常に空配列を返すべきですが、以前はNotSupportedExceptionをスローしていました。抽象基底クラスConstructorInfoにオーバーライドを追加することで、すべてのサブクラス(CoreCLR、Mono、NativeAOT、MetadataLoadContextなど)に統一的に対応しました。
変更内容
- src/libraries/System.Private.CoreLib/src/System/Reflection/ConstructorInfo.cs: 抽象基底クラスに
GetGenericArguments()オーバーライドを追加し、空配列を返すように実装 - src/coreclr/System.Private.CoreLib/src/System/Reflection/RuntimeConstructorInfo.CoreCLR.cs: 不要な実装を削除(1行)
- src/nativeaot/System.Private.CoreLib/src/System/Reflection/Runtime/MethodInfos/RuntimeConstructorInfo.cs: 不要な実装を削除(6行)
- テスト更新:
System.Reflection.MetadataLoadContextとSystem.Reflection.Testsに新規テストケースを追加し、GetGenericArguments()が空配列を返すことを検証
パフォーマンスへの影響
影響なし
関連Issue
その他
- この変更は公開API(
ConstructorInfo.GetGenericArguments())の動作を統一するもので、破壊的変更です。以前はNotSupportedExceptionをスローしていたコードは、今後空配列を受け取ります - 複数のランタイム実装(CoreCLR、Mono、NativeAOT)およびカスタム実装に対応する統一的なソリューション
#128042 Delete ICorDebugProcess11
- 作成者: @Copilot
- 作成日時: 2026年05月11日 15:41:57(UTC)
- マージ日時: 2026年05月13日 17:21:02(UTC)
- ラベル: area-Diagnostics-coreclr
概要
未使用であった ICorDebugProcess11 インターフェースとその関連型(ICorDebugMemoryRangeEnum、COR_MEMORY_RANGE)を削除します。このインターフェースの唯一のメソッド EnumerateLoaderHeapMemoryRegions は使用されていなかったため、デバッグAPI表面を簡潔にするための整理です。
変更内容
- 公開デバッグAPI層(cordebug.idl):
ICorDebugProcess11インターフェース定義とその関連型を削除 - DBI(Debugger Interface)層:
CordbProcess::EnumerateLoaderHeapMemoryRegionsメソッドの実装削除 - DAC/DBI インターフェース: IDL定義(dacdbi.idl)と C++ ヘッダ(dacdbiinterface.h)から
GetLoaderHeapMemoryRangesメソッドを削除 - DAC(Data Access Component)実装層: loader allocator と JIT code heap の範囲列挙実装を削除(dacdbiimpl.cpp/h)
- マネージドレイヤー: cDAC の COM projection と forwarding stub を削除(IDacDbiInterface.cs、DacDbiImpl.cs)
- プリビルド成果物: cordebug_i.cpp、cordebug.h から関連定義を削除
パフォーマンスへの影響
影響なし
関連Issue
その他
互換性への懸念事項:
- このPRは公開デバッグAPI(
ICorDebugProcess11)の削除を行う破壊的変更です。本インターフェースを使用していた外部デバッガはQueryInterfaceが失敗するようになります。 - DAC/DBI インターフェース(
IDacDbiInterface)からメソッドを削除するため、vtable スロットがシフトします。DBI↔DAC 間のバージョン互換性チェック(protocol version negotiation)が混在バージョン実行を防ぐ必要があります。検証されていない場合、バージョン不一致で誤ったfunction pointer呼び出しが発生する可能性があります。
#128023 [release/10.0] Port dump collection perf improvements
- 作成者: @hoyosjs
- 作成日時: 2026年05月11日 07:51:24(UTC)
- マージ日時: 2026年05月13日 00:41:42(UTC)
- ラベル: Servicing-approved area-Diagnostics-coreclr
概要
minidump収集パフォーマンス向上のための3つのDAC改善をrelease/10.0にバックポートします。DACインスタンスキャッシュの実装変更(SHashへの置き換え)、デバッガパッチキャッシュの追加、およびオプトイン環境変数DOTNET_EnableFastHeapDumpsによるHEAP2列挙パスの有効化により、大規模.NETアプリケーション(多数のスレッド・深いスタック)でのダンプ収集時間を大幅に短縮します(測定値:SHash導入で約9.5倍高速化、パッチキャッシュで55s→7s削減)。
変更内容
- DACインスタンスキャッシュの改善 (
dacimpl.h,daccess.cpp):手書きハッシュテーブルからSHashベースの実装に置き換え、高負荷時のFind/Insert操作のスケーラビリティを向上 - デバッガパッチキャッシュの追加 (
dacfn.cpp,dacimpl.h,daccess.cpp):x64スタックアンワインド時にパッチハッシュテーブルの再走査を避けるためパッチリストをキャッシュ、Flush()で無効化 - 高速ヒープダンプの環境変数制御 (
enummem.cpp,clrconfigvalues.h,dacvars.h,vars.hpp,vars.cpp,ceemain.cpp):DOTNET_EnableFastHeapDumps環境変数でHEAP→HEAP2の昇格を有効化し、ローダーヒープページを一括ダンプ
パフォーマンスへの影響
- SHashベースのインスタンスキャッシュ:2.5kフレームの深いスタック、50スレッドでの計測で約9.5倍のminidump収集速度向上
- デバッガパッチキャッシュ:10スレッド×10,000反復での計測で55秒→約7秒に削減
- これらの変更はDAC診断操作(ダンプ収集、デバッグ)時のみ実行され、ランタイム実行時のパフォーマンスへの影響なし
関連Issue
その他
- 本変更はmain (#125631, #125459, #127321)から3月以降安定稼行しており、報告済み問題なし
- すべての変更はDAC専用コードパス(
daccess.cpp、dacfn.cpp、dacimpl.h)に限定されランタイム実行に影響なし DOTNET_EnableFastHeapDumpsはオプトイン設定で、デフォルト動作の変更なし- リスク評価:低(DAC診断操作のみに影響、opt-inベース)
#128022 [release/8.0] Port dump collection perf improvements
- 作成者: @hoyosjs
- 作成日時: 2026年05月11日 07:44:11(UTC)
- マージ日時: 2026年05月13日 00:40:39(UTC)
- ラベル: Servicing-approved area-Diagnostics-coreclr
概要
大規模な.NETアプリケーション(多数のスレッド、深いスタック)のミニダンプ収集パフォーマンスを改善する3つのDAC最適化をbackportします。DacInstanceManagerのハッシュテーブル実装をSHashに置き換え、デバッガパッチのキャッシング機能を追加し、環境変数DOTNET_EnableFastHeapDumpsにより高速ヒープダンプ列挙を有効化します。測定結果として、深いスタック(2.5k フレーム)の50スレッド環境でミニダンプ収集が約9.5倍高速化、ヒープダンプが55秒から約7秒に短縮されました。
変更内容
DacInstanceManagerハッシュテーブル最適化 (dacaccess.cpp,dacimpl.h): 固定バケット数の手書きハッシュテーブルをSHashベースに置き換え。高負荷下での検索・挿入操作の性能低下を解消。- デバッガパッチキャッシング (
dacfn.cpp,dacaccess.cpp): x64スタックアンワインディング時のパッチテーブル再スキャン(1,000バケット)を回避。キャッシュは初回アクセス時に生成、Flush()時に無効化。 - 高速ヒープダンプ列挙 (
enummem.cpp,clrconfigvalues.h,dacvars.h,ceemain.cpp,vars.cpp,vars.hpp):DOTNET_EnableFastHeapDumps環境変数設定時、CLRDATA_ENUM_MEM_HEAPをCLRDATA_ENUM_MEM_HEAP2に昇格。ローダーヒープページを一括ダンプすることで個別ランタイム構造体ウォークを回避。
パフォーマンスへの影響
大幅な改善(ダイアグノスティック操作限定):
- ミニダンプ収集:深いスタック環境で約9.5倍高速化
- ヒープダンプ収集:55秒→約7秒(10スレッド、10,000イテレーション)
- ランタイム実行への影響:なし(DAC専用コードパスのため、診断操作時のみ実行)
関連Issue
その他
リスク評価: 低
- SHashおよびパッチキャッシュ変更はDAC専用コードパス(ダンプ収集・デバッグ時)に限定され、ランタイム実行に影響しません。
DOTNET_EnableFastHeapDumpsは明示的なオプトイン設定で、デフォルト動作は変更されません。- 3つの変更すべてが3月以来mainで安定稼動しており、報告された問題はありません。
- 本変更はrelease/8.0への backportです。
#128021 Update Native AOT documentation
- 作成者: @eduardo-vp
- 作成日時: 2026年05月11日 02:57:06(UTC)
- マージ日時: 2026年05月13日 21:49:04(UTC)
- ラベル: area-Meta
概要
Native AOT関連のドキュメントを更新し、初心者にとって理解しやすくするための改善を実施しました。メタデータの概要章を新規追加し、既存の設計ドキュメント間のクロスリンク強化、デバッグワークフローの説明拡充などが含まれています。
変更内容
- docs/workflow/building/coreclr/nativeaot.md: ILCデバッグワークフロー簡素化のため、シングルスレッドコンパイルオプション説明を追加
- docs/design/coreclr/botr/metadata-overview.md: 新規作成 - .NETメタデータの概念、テーブル/ヒープ、トークンなどを紹介する章
- docs/design/coreclr/botr/README.md: BOTRの目次に新しいメタデータ概要章を追加
- docs/design/coreclr/botr/managed-type-system.md: メタデータ関連セクションの改善、例の追加、コンテキストとECMAアクセスパターンの説明を拡充
- docs/design/coreclr/botr/type-system.md: 型システム依存関係リストを新しいメタデータ概要ドキュメントにリンク
- docs/design/coreclr/botr/ilc-architecture.md: メタデータへのクロスリンク追加、IL走査の動機説明を拡張
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRはドキュメント更新のみであり、コードベースへの変更は含まれていません。Native AOT開発に携わる開発者向けの設計ドキュメント改善となります。
#127962 Add Bundler.ComputeBundleContents to Microsoft.NET.HostModel
- 作成者: @elinor-fung
- 作成日時: 2026年05月08日 17:59:55(UTC)
- マージ日時: 2026年05月13日 23:40:01(UTC)
- ラベル: area-Host
概要
Single-File Bundle機能に対して、実際にバンドルを生成せずにバンドルに含まれるファイルと除外されるファイルを事前計算するための新しい公開API Bundler.ComputeBundleContents() を追加しました。これにより、SDKはビルド段階でバンドル メンバーシップを事前に判定でき、ビルド増分性をサポートできるようになります。
public sealed class BundleContents
{
public FileSpec Host { get; }
public IReadOnlyList<FileSpec> IncludedFiles { get; }
public IReadOnlyList<FileSpec> ExcludedFiles { get; }
}
public class Bundler
{
public BundleContents ComputeBundleContents(IReadOnlyList<FileSpec> fileSpecs);
public string GenerateBundle(BundleContents bundleContents);
}
変更内容
- BundleContents.cs: 新規ファイル。ホストファイルと含まれるファイル/除外されるファイルのリストを保持する新しい公開型
BundleContentsを追加 - Bundler.cs:
ComputeBundleContents()メソッドを追加してバンドル メンバーシップを計算。GenerateBundle(BundleContents)オーバーロードを追加してフィルタリングと型推論を再実行しないバンドル生成を実現。既存のGenerateBundle(IReadOnlyList<FileSpec>)を新しいAPIを通じて委譲するよう リファクタリング - BundlerConsistencyTests.cs:
ComputeBundleContents()の全BundleOptionsバリアントのカバレッジを追加。直接生成と事前計算生成の等価性を検証するテストを実装
パフォーマンスへの影響
影響なし。本変更は計算結果のキャッシング機構を導入するものであり、ビルド段階でのバンドル メンバーシップ判定の重複計算を回避することで、ビルドのスループット向上につながることが期待されます。
関連Issue
その他
- この変更は
Microsoft.NET.HostModelライブラリの公開APIを拡張します - 既存の
GenerateBundle()メソッドの動作は変わらず、後方互換性を維持しています - ホスト ファイルの事前フィルタリング処理をより明確にするため、
GetFilteredFileSpecs()から呼び出し元に移動しました
#127949 Arm64:[PAC-RET] Instruction encodings
- 作成者: @SwapnilGaikwad
- 作成日時: 2026年05月08日 09:40:35(UTC)
- マージ日時: 2026年05月13日 06:34:55(UTC)
- ラベル: area-CodeGen-coreclr community-contribution
概要
ARM64向けのPointer Authentication Code (PAC) Return (RET)命令エンコーディングを追加するPRです。AUTIB、PACIB、RETAA、RETABなど12種類のPAC関連命令のエンコーディングを実装し、セキュリティ機能の強化に対応しています。
変更内容
- emitarm64.cpp: AUTIB系(AUTIB、AUTIB1716、AUTIBSP、AUTIBZ、AUTIZB)およびPACIB系(PACIB、PACIB1716、PACIBSP、PACIBZ、PACIZB)、RET系(RETAA、RETAB)命令のエンコーディング実装を追加
- instrsarm64.h: 12種類のPAC関連命令定義を追加
- emitfmtsarm64.h: 命令フォーマット定義を追加
- codegenarm64test.cpp: テストケースを追加
パフォーマンスへの影響
影響なし(命令エンコーディングの追加のため、実行時パフォーマンスへの直接的な影響はありません)
関連Issue
その他
- これらの命令エンコーディングはPointer Authentication機能の実装に必要な基盤となります
- B key variantsに特に注力した実装となっています
- JIT コンパイラのARM64バックエンド(emitarm64.cpp)に対する内部実装の追加となります
#127935 Build wasm JIT and crossgen2 R2R of System.Private.CoreLib for browser target
- 作成者: @davidwrighton
- 作成日時: 2026年05月07日 23:38:15(UTC)
- マージ日時: 2026年05月13日 23:51:39(UTC)
- ラベル: area-CodeGen-coreclr
概要
WebAssembly(browser)ターゲット向けのクロスプラットフォームビルドを有効化し、build.cmd clr+libs -os browserでwasm JIT (clrjit_universal_wasm_*)、crossgen2、およびSystem.Private.CoreLibのwasm形式R2R出力を生成できるようにする変更です。
変更内容
- eng/Subsets.props: wasmターゲット向けにクロスアーキテクチャビルド機能を有効化し、
ClrAllJitsSubsetの代わりにClrWasmJitSubsetを選択 - src/coreclr/CMakeLists.txt: wasmクロスコンポーネントビルド向けの早期リターンパスを追加
- src/coreclr/jit/CMakeLists.txt: wasm target時に
clrjit_universal_wasm_${ARCH_HOST_NAME}を生成 - src/coreclr/gcinfo/CMakeLists.txt: wasm-targeting用に
gcinfo_universal_wasmライブラリを追加 - src/coreclr/crossgen-corelib.proj: browserターゲット向けcrossgen2を
--obj-format:wasmと--codegenopt:JitWasmNyiToR2RUnsupported=1で有効化し、System.Private.CoreLib.NotReadyYet.wasmとして出力 - src/coreclr/jit/compiler.cpp & codegenwasm.cpp: 欠落していた
#ifdef PROFILING_SUPPORTEDガードを追加 - eng/native/configureplatform.cmake: クロスコンポーネントビルドからemscriptenオプションを除外
- src/coreclr/utilcode/CMakeLists.txt: wasmターゲットに対してnatvisのリンクをスキップ
- src/coreclr/tools/aot/crossgen2/crossgen2.props:
CrossHostArch設定時にwasm向けjitinterfaceの使用を許可
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- GitHub Copilotの支援を受けて作成されたPR
- この変更はビルドインフラストラクチャとクロスコンパイラの調整であり、ランタイムの公開APIには直接的な影響なし
- wasmターゲット向けの内部実装(JIT、crossgen2、R2R生成)に関わる変更
#127901 [release/9.0-staging] Update dependencies from dotnet/icu
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年05月07日 02:04:11(UTC)
- マージ日時: 2026年05月13日 10:44:45(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/icuリポジトリからの依存関係を更新するPull Requestです。Microsoft.NETCore.Runtime.ICU.Transportパッケージを9.0.0-rtm.26210.1から9.0.0-rtm.26261.1にアップデートしています。
変更内容
- eng/Version.Details.xml: 依存関係の詳細情報を更新(+3/-3行)
- eng/Versions.props: バージョン情報を更新(+1/-1行)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- この更新はdotnet/icuのrelease/9.0ブランチから自動生成されたものです(Maestro自動依存関係更新)
- ICUコンポーネントのアップデートのため、国際化機能(言語、文化、照合など)に関連する機能に影響する可能性があります
#127891 Update gcc leg from v15 to v16
- 作成者: @am11
- 作成日時: 2026年05月06日 23:00:09(UTC)
- マージ日時: 2026年05月13日 14:49:43(UTC)
- ラベル: area-Infrastructure community-contribution
概要
GCC(GNU Compiler Collection)のバージョンをv15からv16にアップデートする変更です。ドキュメント、パイプライン設定、およびテストファイルが更新されています。
変更内容
- docs/workflow/using-docker.md: Docker関連ドキュメントのGCC versionの参照を更新(1行変更)
- eng/pipelines/common/platform-matrix.yml: パイプラインプラットフォームマトリックスの設定を更新(1行変更)
- eng/pipelines/common/templates/pipeline-with-resources.yml: パイプラインテンプレート内のGCC versionの参照を更新(2行変更)
- src/tests/Interop/common/ComHelpers.h: COM相互運用テストヘルパーに5行のコード追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
GCC v16へのアップグレードに伴い、CIパイプラインやビルド環境の設定が同期して更新されています。ComHelpers.hへの追加コードの詳細は提供されていません。
#127843 Fix a series of possible race conditions in thread static variable initialization
- 作成者: @davidwrighton
- 作成日時: 2026年05月05日 23:58:22(UTC)
- マージ日時: 2026年05月13日 18:30:46(UTC)
- ラベル: area-VM-coreclr
概要
スレッドローカルスタティック変数初期化時の競合状態を修正するPRです。TLSインデックスメタデータとTLSIndex→MethodTableマップの更新時に、VolatileStoreを使用して発行/可視性保証を強化し、複数スレッドからの並行アクセス時に部分的に発行された状態が観測されないようにします。これはmacOS arm64でのGetThreadLocalStaticBaseクラッシュの問題に対応しています。
変更内容
- threadstatics.cpp/h: TLSIndexToMethodTableMapのリサイズ時に
VolatileStoreでpMapとm_maxIndexを発行し、マップの内容がコピー/初期化された後に他スレッドがポインタ/サイズの更新を観測できるようにしました。 - threadstatics.cpp/h: 個別のマップエントリの読み取り/クリア時に
VolatileStoreを使用し、並び替えを防止し、スレッド間でのインデックス更新の可視性を向上させました。 - threadstatics.cpp/h: 新たに割り当てられたTLSIndex(
*pIndex)の発行時にVolatileStoreを使用し、割り当てインデックスを観測した他スレッドが割り当てパス上の先行する書き込みについて意図した順序付け/可視性を持つようにしました。
パフォーマンスへの影響
VolatileStore操作の追加による軽微なオーバーヘッドが想定されますが、競合状態の修正による安定性向上が優先されます。詳細なベンチマーク結果は提供されていません。
関連Issue
その他
なし
#127837 [release/9.0] Update dependencies from dotnet/emsdk
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年05月05日 21:35:35(UTC)
- マージ日時: 2026年05月13日 01:12:09(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/emsdkからの依存関係を更新するPull Request。release/9.0ブランチに対して、EmscriptenワークロードマニフェストとJIT Tools、LLVM関連ツールのバージョンを最新化しています。
変更内容
- NuGet.config: NuGetフィードの設定を更新(+1/-1行)
- eng/Version.Details.xml: 以下の依存関係をアップデート
- Microsoft.SourceBuild.Intermediate.emsdk: 9.0.16-servicing.26221.3 → 9.0.17-servicing.26258.3
- Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport: 9.0.16-servicing.26221.3 → 9.0.17-servicing.26258.3
- Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100: 9.0.16 → 9.0.17
- JIT Tools(runtime.linux-arm64, runtime.linux-x64, runtime.linux-musl-arm64/-x64, runtime.win-arm64/-x64, runtime.osx-arm64/-x64): 19.1.0-alpha.1.26202.3 → 19.1.0-alpha.1.26256.3
- LLVM SDK/Tools(複数プラットフォーム): 19.1.0-alpha.1.26202.3 → 19.1.0-alpha.1.26256.3
- eng/Versions.props: バージョン定義を同期更新(+24/-24行)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
自動化されたdotnet-maestro[bot]による依存関係更新。コヒーレンシーアップデートにより、Emscriptenマニフェストの親依存関係として複数プラットフォームのJIT Tools・LLVM関連ツールが整合性を保つように更新されています。
#127835 [release/8.0] Update dependencies from dotnet/emsdk
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年05月05日 20:58:57(UTC)
- マージ日時: 2026年05月13日 01:13:24(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/emsdkからの依存関係を更新するPull Requestです。Emscripten関連のNuGetパッケージをrelease/8.0ブランチで更新しています。
変更内容
- NuGet.config: dotnet/emsdk リポジトリの参照を更新
- eng/Version.Details.xml: 以下の2つのパッケージバージョンを更新
Microsoft.SourceBuild.Intermediate.emsdk: 8.0.27-servicing.26224.1 → 8.0.28-servicing.26258.2Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100: 8.0.27 → 8.0.28
- eng/Versions.props: バージョン情報の同期更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 自動依存関係更新(dotnet-maestro[bot]による)
- Emscripten(WebAssemblyコンパイル用)の servicing更新
- Release/8.0ブランチを対象とした更新
#127778 [cDAC] Implement SetDebugState for cDAC
- 作成者: @barosiak
- 作成日時: 2026年05月05日 00:10:50(UTC)
- マージ日時: 2026年05月13日 04:02:49(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(Compact Data Access Component)デバッガ機能にSetDebugStateを実装します。デバッガ制御スレッド状態をThreadStateNoConcurrencyから新しいVolatile<DebuggerControlledThreadState>フィールドに分離し、読み取り-修正-書き込みレースを回避しながらThread契約を通じて公開します。
変更内容
- native/ランタイム部分:
threads.hにDebuggerControlledThreadState列挙型を追加、TSNC_DebuggerUserSuspendを新列挙型に移行、データディスクリプタにStateNCオフセットを公開 - cDAC管理側:
IThread契約にSetThreadState/ResetThreadStateメソッドおよびDebuggerControlledThreadState列挙型を追加 - DacDbi実装:
DacDbiImpl.SetDebugStateを実装し、Thread契約経由でデバッガサスペンドビットを設定/リセット(#if DEBUGで従来動作の検証付き) - テスト: 契約レベルユニットテストを追加(設定/リセット/冪等性を検証)
- ドキュメント: Thread契約ドキュメント(
Thread.md)を更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- 全アーキテクチャで16の新規テスト実行、既存テストは合格
- 内部実装の変更であり、公開APIの破壊的変更なし
- Copilotレビューで低信頼度コメント(1件):
DacDbiImpl.SetDebugStateのHRESULTマッピングや無効状態エラー処理について、DacDbiレイヤーレベルでのテストが推奨されている点が指摘されている
#127757 [clr-interp] Report async-suspension locals to the debugger via GetAsyncLocals
- 作成者: @kotlarmilos
- 作成日時: 2026年05月04日 14:54:42(UTC)
- マージ日時: 2026年05月13日 11:25:07(UTC)
- ラベル: area-CodeGen-Interpreter-coreclr
概要
インタープリタで実行される非同期メソッドがawaitで中断された際に、デバッガが局所変数と引数の値を取得できるようにします。従来、JIT経路でのみ対応していた非同期デバッグ情報の報告をインタープリタ経路にも実装し、ICorDebugAsyncFrame::GetArgumentがインタープリタフレームでCORDBG_E_IL_VAR_NOT_AVAILABLEを返す問題を解決します。
変更内容
- src/coreclr/interpreter/inc/interpretershared.h:
InterpAsyncDebugVar型を追加し、中断ポイントごとに{ilVarNum, dataOffset}エントリのテーブルをInterpAsyncSuspendDataに追加 - src/coreclr/interpreter/compiler.cpp:
EmitSuspendで非同期ローカルデバッグメタデータをキャプチャし、中断ポイントのIL変数と継続オフセットのマッピングを生成・永続化 - src/coreclr/interpreter/compiler.h: コンパイラ側のメタデータ構造体を追加
- src/coreclr/vm/interpexec.cpp: インタープリタ実行エンジンの非同期サスペンションデータ処理を更新
- src/coreclr/debug/daccess/dacdbiimpl.cpp:
GetAsyncLocalsをインタープリタ対応に修正し、state経由で中断ポイントのバイトコードをデコードしてインタープリタ非同期ローカルをデバッガに返す
パフォーマンスへの影響
影響なし
関連Issue
その他
本変更により、以下の8つのインタープリタデバッガテスト失敗が解決されます:
- Async.AsyncSimple
- Async.AsyncBreakpoint
- Async.AsyncBreakpointJmc
- Async.AsyncGeneric
- Async.AsyncRecursive
- Async.AsyncSharedGeneric
- Async.AsyncV2CallingAsyncV1Iterator
- Async.AsyncGenericStepInto
#127754 [clr-interp] Skip RSLock leak assert for DbgTransportTarget on Unix
- 作成者: @kotlarmilos
- 作成日時: 2026年05月04日 14:27:52(UTC)
- マージ日時: 2026年05月13日 15:05:20(UTC)
- ラベル: area-Diagnostics-coreclr
概要
Unix環境(デスクトップインタプリタ)で静的なDbgTransportTargetインスタンスが破棄される際、mscordbi.dylibに対してDbgDllMain(DLL_PROCESS_DETACH)が呼び出されないため、埋め込まれたRSLockが初期化されたままとなり、デバッグビルドで破棄アサーションが失敗していた問題を修正します。新しいcLockAllowLeak属性を導入し、シャットダウンパスが保証されない静的ライフタイムロックのアサーションをバイパスする仕様に変更します。
変更内容
- src/coreclr/debug/di/rspriv.h:
RSLockに新しい属性cLockAllowLeakを追加。静的ライフタイムロックで所有者のシャットダウンパスが保証されない場合に使用します - src/coreclr/debug/di/rspriv.inl:
~RSLock()デストラクタを修正。cLockAllowLeak設定時にリーク検出アサーションCONSISTENCY_CHECK_MSGFをバイパスします - src/coreclr/debug/di/dbgtransportmanager.cpp:
DbgTransportTarget::m_sLockをcLockFlat | cLockAllowLeakで初期化し、静的インスタンス破棄時にアサーションが発生しないようにします
パフォーマンスへの影響
影響なし。破棄時のアサーション検査をバイパスする変更であり、実行時のパフォーマンスには影響を与えません。
関連Issue
なし
その他
テスト結果: osx-arm64環境でDebugger.Tests --clrinterpreter実行時、xunitテスト失敗数が230から65に大幅削減されました。特にInspection.*、Stackwalking.ClrMethods、Stepping.*、Async.AsyncStepIntoなど複数のテストカテゴリで改善が確認されています。
修正はUnixプラットフォーム特有の動的ローダー動作に対応したもので、他のプラットフォームへの影響はありません。
#127572 Fix additional issue to support >1024 CPUs
- 作成者: @janvorli
- 作成日時: 2026年04月29日 16:43:02(UTC)
- マージ日時: 2026年05月13日 11:11:46(UTC)
- ラベル: area-GC-coreclr
概要
1024を超えるCPUを搭載したUnixシステムにおいて、スレッドアフィニティ設定時の未対応ケースを修正します。前回のPRで見落とされていた箇所を補完し、GCToOSInterface::SetThreadAffinity()で動的割り当てされたCPUセットを使用するように更新します。
変更内容
- src/coreclr/gc/unix/gcenv.unix.cpp
GCToOSInterface::Initialize()中にOS構成CPU数をキャッシュ(g_configuredCpuCount)GCToOSInterface::SetThreadAffinity()を更新し、固定サイズのcpu_set_tから動的割り当てCPUセット(CPU_ALLOC/CPU_*_Sマクロ)に変更- アフィニティ適用後に動的割り当てリソースを解放
パフォーマンスへの影響
影響なし(バグ修正のため)
関連Issue
その他
- 前回のPRで対応し忘れていたコードパスを修正する補足的な変更です
- Unix/LinuxプラットフォームにおけるGC(Garbage Collector)の処理に関連した内部実装の変更となります
#126782 Propagate actual error info when loading a TPA assembly fails with FileNotFoundException
- 作成者: @elinor-fung
- 作成日時: 2026年04月11日 02:29:11(UTC)
- マージ日時: 2026年05月13日 21:38:21(UTC)
- ラベル: area-AssemblyLoader
概要
TPA(Trusted Platform Assembly)アセンブリの読み込み失敗時に、実際のエラー情報(ファイルパス、エラーコード、原因)をFileNotFoundException.FusionLogプロパティに格納するよう改善しました。これまでは「ファイルが見つかりません」という汎用メッセージのみで、具体的な失敗原因が不明でした。
改善例:
// 変更後の例
// FusionLog に以下のような詳細情報が追加される:
// "Failed to open file 'C:\path\to\TpaLibLocked.dll'.
// The process cannot access the file because it is being used by another process. (0x80070020)"
変更内容
- ネイティブバインダーパイプライン:
BindAssembly、BindByTpaList、GetAssemblyなどのメソッドにpDiagnosticInfoパラメータを追加し、バインド試行中のエラー情報を収集・伝播 - 例外ハンドリング:
FileNotFoundExceptionコンストラクタを拡張して診断情報を受け付け、FusionLogプロパティに設定 - 失敗キャッシュ:FailureCacheに診断情報を保存し、キャッシュ検索時に返却するよう改善
- リソース管理:HRESULTデコーディング用の診断フォーマット文字列をリソース(mscorrc.rc)に追加
- テスト:ロック/破損/欠落の3つのTPA失敗シナリオに対応するテストアセンブリとテストケースを追加
パフォーマンスへの影響
影響なし。診断情報の収集・伝播はエラーパス(例外発生時)のみで実行されるため、通常の成功パフォーマンスは変わりません。
関連Issue
その他
FusionLogは従来から存在するプロパティですが、これまで常に空でした。本変更で初めて意味のある値が格納されます- 変更は内部実装(ネイティブバインダー)に限定され、公開API
FileNotFoundExceptionのシグネチャは拡張のみで互換性を維持 - 診断情報にはファイルパス、エラーコード(16進数)、Win32エラーメッセージが含まれる
#126520 [cDAC] Add interpreter support for stack walking and diagnostics
- 作成者: @max-charlamb
- 作成日時: 2026年04月03日 21:59:19(UTC)
- マージ日時: 2026年05月13日 17:26:48(UTC)
- ラベル: area-Diagnostics-cdac
概要
cDAC(契約ベースのデータアクセスコンポーネント)にインタープリタ実行サポートを追加し、診断ツールがインタープリタフレームを含むスタックの正確なウォーク、インタープリタプリコードの解決、解釈メソッドのメソッド情報取得、およびレガシーSOS DAC インターフェイス経由でのインタープリタコード公開を可能にします。
変更内容
- ネイティブデータディスクリプタ:
InterpreterRealCodeHeader、InterpreterPrecodeData、InterpMethod、InterpreterFrameなどのインタープリタ関連型記述子をdatadescriptor.incに追加 - 実行マネージャー: 新しい
ExecutionManagerCore.InterpreterJitManagerがインタープリタコードヒープのアドレス検索を処理。GetCodeBlockHandleがJITヒープにない場合、インタープリタヒープを検索 - プリコード解決:
IPrecodeStubsに新しいGetInterpreterCodeFromInterpreterPrecodeIfPresentAPI を追加。4つのコールサイト(GetMethodDescData、CopyNativeCodeVersionToReJitDataなど)に適用 - スタックウォーキング:
FrameIteratorがInterpreterFrameを処理し、InterpMethodContextFrameからメソッド記述子とネイティブコードポインタを抽出。アーキテクチャ別ハンドラ(AMD64、ARM64)が遷移フレーム時のレジスタ設定を実装 - レガシーSOS DAC:
GetCodeHeaderDataがインタープリタメソッドに対応。GetILOffsetsByAddressがインタープリタIPの解決に成功 - テスト: ユニットテストおよび混合JIT/インタープリタスタックを使用した統合テスト(
InterpreterStackDumpTests)を追加。新しいインタープリタSOS診断パイプラインレグも追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- この変更は内部実装(cDAC)およびネイティブランタイムの契約層に対するもので、公開APIへの直接的な破壊的変更はなし
- 診断ツール(デバッガ、SOS)がインタープリタで実行されるコードを正しく処理できるようになるための基盤実装
- クロスプラットフォーム対応で、ARM、ARM64、AMD64などのアーキテクチャに対応するアンワインダーロジックを実装
- レビューコメントではCLRToCOMMethodFrame の遷移フレーム処理に関する確認指摘あり
#126136 [automated] Merge branch 'release/9.0' => 'release/9.0-staging'
- 作成者: @github-actions[bot]
- 作成日時: 2026年03月25日 23:51:35(UTC)
- マージ日時: 2026年05月13日 15:06:58(UTC)
- ラベル: Servicing-approved area-codeflow
概要
release/9.0ブランチからrelease/9.0-stagingブランチへの自動マージPRです。vseanreesermsftによってrelease/9.0に加えられた変更を、release/9.0-stagingに取り込みます。マージ時はマージコミット(squashやrebaseではなく)で実施する必要があります。
変更内容
主な変更は以下の通りです:
- バージョン情報の更新: NuGet.config、eng/Version.Details.xml、eng/Versions.propsのアップデート
- System.Net.Mail: MailAddressParserに検証ロジックを追加(14行)、関連テストの更新
- System.Security.Cryptography.Xml: セキュリティ関連の実装強化
- LocalAppContextSwitches.csの新規追加(76行)
- CanonicalizationDispatcher、EncryptedData、EncryptedKey、EncryptedXml、KeyInfo、XmlDecryptionTransformなど複数ファイルでのセキュリティロジック改善
- テスト追加(EncryptedXmlSample4.xmlなど)
- CoreCLR debugコンポーネント: createdump、dacfn、remote-unwound関連の小規模修正
- ドキュメント・パイプライン設定: cross-building.md、helix-queues-setup.ymlの微細な更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
本PRは自動生成されたマージPRであり、CI/CDチェック完了後、GitHub UIまたはコマンドラインでマージコミット形式で統合する必要があります。マージ競合が発生した場合は手動で解決してください。
#126058 [automated] Merge branch 'release/8.0' => 'release/8.0-staging'
- 作成者: @github-actions[bot]
- 作成日時: 2026年03月24日 22:27:20(UTC)
- マージ日時: 2026年05月13日 10:54:40(UTC)
- ラベル: Servicing-approved area-codeflow
概要
release/8.0ブランチからrelease/8.0-stagingブランチへの自動マージPRです。richlander によるコミットを含む変更を統合します。このPRはGitHub Actionsによる自動生成で、手動でマージコミットを作成して統合する必要があります。
変更内容
- ビルド・パイプライン関連: markdownlint設定、platform-matrix、helix-queuesセットアップ、runtime-communityパイプラインの更新
- バージョン管理: Version.Details.xml、Versions.propsの更新
- CoreCLRデバッグ: createdump、threadinfo、remote-unwinding関連のPAL例外処理修正
- ライブラリ修正:
System.ComponentModel.Annotations: EmailAddressAttribute の改善System.Net.Mail: MailAddressParserの修正(メールアドレス解析ロジック強化)System.Formats.Tar: TarEntry/TarHeaderの読み取り処理改善System.Runtime.Numerics: BigInteger テスト修正System.Security.Cryptography.Xml: リソース文字列追加
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRは自動マージツールによる定期的なブランチ同期です。マージ競合が発生した場合は手動で解決が必要です。マージはスクイャッシュやリベースではなく、--no-ffオプション付きマージコミットで実施してください。
#125945 [release/9.0-staging] Update dependencies from dotnet/xharness
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年03月23日 05:03:32(UTC)
- マージ日時: 2026年05月13日 11:02:20(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/xharnessの依存関係を更新するPull Requestです。Microsoft.DotNet.XHarness関連パッケージを11.0.0-prerelease.26168.1から11.0.0-prerelease.26230.4にアップデートしています。
変更内容
.config/dotnet-tools.json: ツール設定を更新(+1/-1)eng/Version.Details.xml: バージョン詳細を更新(+6/-6)eng/Versions.props: バージョンプロパティを更新(+3/-3)
更新対象パッケージ:
- Microsoft.DotNet.XHarness.CLI
- Microsoft.DotNet.XHarness.TestRunners.Common
- Microsoft.DotNet.XHarness.TestRunners.Xunit
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPRはMaestro(自動依存関係更新ツール)による自動更新です。release/9.0-stagingブランチへのマージを対象としています。
#125704 [release/8.0-staging] Update dependencies from dotnet/icu
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年03月18日 02:02:08(UTC)
- マージ日時: 2026年05月13日 10:42:47(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/icu リポジトリの依存関係を更新するPull Requestです。Microsoft.NETCore.Runtime.ICU.Transport パッケージを 8.0.0-rtm.26152.3 から 8.0.0-rtm.26256.1 へ更新しています。
変更内容
- eng/Version.Details.xml: ICU Transport パッケージのバージョン参照を更新
- eng/Versions.props: 対応するバージョン情報を更新
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
- このはMaestroによる自動依存関係更新Pull Requestです
- release/8.0-staging ブランチへの更新
- dotnet/icu の dotnet/release/8.0 ブランチからの同期
#125478 [Android] Fix DNS localhost subdomain resolution with IPv6 on Android
- 作成者: @simonrozsival
- 作成日時: 2026年03月12日 08:29:37(UTC)
- マージ日時: 2026年05月13日 09:30:33(UTC)
- ラベル: area-System.Net os-android
概要
AndroidでIPv6を使用したlocalhostサブドメインの名前解決が失敗する問題を修正しました。Androidのデフォルト/etc/hostsが::1をip6-localhostにマップしているため、RFC 6761フォールバック時に"localhost"のIPv6解決に失敗していました。修正により、IPv6解決失敗時に"ip6-localhost"への再試行を追加し、Androidで正常に動作するようになりました。
変更内容
- src/libraries/System.Net.NameResolution/src/System/Net/Dns.cs: 同期・非同期の両コードパス(
GetHostEntryOrAddressesCoreおよびGetAddrInfoWithTelemetryAsync)にAndroid IPv6フォールバック処理を追加。InterNetworkV6でのlocalhost解決失敗時に"ip6-localhost"への再試行を実装 - src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostAddressesTest.cs:
#124751の[ActiveIssue]アノテーションを削除 - src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.cs:
#124751の[ActiveIssue]アノテーションを削除
パフォーマンスへの影響
影響なし(条件付きの再試行のみで、失敗時の追加コストは最小限)
関連Issue
その他
- テスト結果: macOS 131テスト合格、Android arm64(エミュレータ)でも全テスト合格(XHarness exit code 0)、以前無効化されていた4つの
RespectsAddressFamilyテストケースが復活 - 互換性: 内部実装の変更であり、公開APIへの影響なし
#125098 [release/10.0] Update dependencies from dotnet/icu
- 作成者: @dotnet-maestro[bot]
- 作成日時: 2026年03月03日 02:04:43(UTC)
- マージ日時: 2026年05月13日 11:43:09(UTC)
- ラベル: Servicing-approved area-codeflow
概要
dotnet/icu リポジトリからの依存パッケージを更新するPull Requestです。Microsoft.NETCore.Runtime.ICU.Transport パッケージを 10.0.0-rtm.26104.1 から 10.0.0-rtm.26202.1 へアップデートしています。
変更内容
- eng/Version.Details.props: Microsoft.NETCore.Runtime.ICU.Transport のバージョン情報を更新(1行追加、1行削除)
- eng/Version.Details.xml: ビルド日時とコミットハッシュを更新(2行追加、2行削除)
パフォーマンスへの影響
影響なし
関連Issue
なし
その他
このPull Requestは dotnet-maestro[bot] による自動依存パッケージ更新です。更新内容はバージョン番号の変更のみで、機能的な変更は含まれていません。