← アーカイブ一覧へ戻る
このページは、dotnet/runtime リポジトリにマージされたPull Requestを自動的に収集し、その内容をAIが要約した内容を表示しています。そのため、必ずしも正確な要約ではない場合があります。
日別 Pull Request 数
日付をクリックするとその日のセクションへ移動します。
ラベル別 Pull Request 数(上位10)
ラベル別 Pull Request 数の上位10
上位10件の合計599件を100%とした内訳です。各スライスの番号は凡例の番号に対応します。ラベルごとの件数は凡例を参照してください。
1. community-contribution — 114 PRs (19.0%)
2. Servicing-approved — 111 PRs (18.5%)
3. area-CodeGen-coreclr — 110 PRs (18.4%)
4. arch-wasm — 75 PRs (12.5%)
5. area-NativeAOT-coreclr — 47 PRs (7.8%)
6. area-VM-coreclr — 34 PRs (5.7%)
7. area-codeflow — 30 PRs (5.0%)
8. area-Infrastructure — 28 PRs (4.7%)
9. area-ReadyToRun — 28 PRs (4.7%)
10. area-System.Security — 22 PRs (3.7%)
1
2
3
4
5
6
7
8
9
10
599
上位10件の合計
1 community-contribution 114 PRs 19.0%
2 Servicing-approved 111 PRs 18.5%
3 area-CodeGen-coreclr 110 PRs 18.4%
4 arch-wasm 75 PRs 12.5%
5 area-NativeAOT-coreclr 47 PRs 7.8%
6 area-VM-coreclr 34 PRs 5.7%
7 area-codeflow 30 PRs 5.0%
8 area-Infrastructure 28 PRs 4.7%
9 area-ReadyToRun 28 PRs 4.7%
10 area-System.Security 22 PRs 3.7%
上位10件で全1007件中599件(59.5%)を占めます。ラベルは1つの Pull Request に複数付くため、比率は PR 数ではなくラベル付与の延べ数に対するものです。
各 Pull Request の概要
この月にマージされた 622 件を新しい日から順に並べています。タイトルをクリックするとその日のページの該当箇所へ移動します。Bot が作成した 81 件はタイトルのみにして、各日の最後にまとめています。
2026年10月22日 (29 PRs) うち Bot 2 件 この日のページ →
@Tomius ・ GitHub ・ area-System.Net.Http community-contribution
Alt-Svc ヘッダーが空、または区切り文字のみ(Alt-Svc: や Alt-Svc: ,)の場合、AltSvcHeaderParser は null のパース結果を返します。#114528 以降、HandleAltSvc はその値が non-null であることを assert した上で参照するため、Release ビルドでは HTTP/3 サポートが有効(既定)な状態で、該当ヘッダーを持つ HTTPS レスポンスを受け取ると NullReferenceException が発生していました。これは HTTP/1.1 や HTTP/2 のリクエストでも発生します。
本PRでは AltSvcHeaderValue にパースされない値をスキップするようにし、.NET 9 の挙動を復元します。
続きを読む
@glomdom ・ GitHub ・ area-CodeGen-coreclr community-contribution arch-riscv
RISC-V64向けJITの emitLoadImmediate において、64ビット定数をデータセクションから ld でロードするフォールバック経路で、スロットのサイズ算出に sizeof(long) を使用していたバグを修正します。LLP64ホスト(Windows)では long が4バイトのため、Windows上で動作するクロスJIT(riscv64ターゲット)が定数の下位4バイトしか出力していませんでした。サイズ算出を sizeof(originalImm) に変更し、定数全体(8バイト)が出力されるようになります。
PRの記載によると、Issueの再現例(ulong / 10)での __managedcode の ld ターゲットは以下のように変化します。
修正前:
0030 cdcccccc 00000000 00000000 00000000
修正後:
0030 cdcccccc cccccccc 00000000 00000000
続きを読む
@max-charlamb ・ GitHub ・ area-Diagnostics-cdac
cDACサブツリー内の Directory.Build.props が、親ディレクトリの Directory.Build.props を取り込む方法を、標準の階層的な探索(hierarchical lookup)を使うように変更したPRです。これにより、プロダクションソースが別のリポジトリ構成にミラーされた場合でもサブツリーを再配置(relocatable)できます。ミラー先にアダプターをソースツリー内に用意する必要もなくなります。
続きを読む
@Copilot ・ GitHub ・ area-ILTools-coreclr
TestTLSWithLoadedDlls テストを、ilasm ラウンドトリップ(IL の逆アセンブル→再アセンブル)の対象から除外する変更です。このテストが依存する IJW(C++/CLI)アセンブリにはネイティブコードが含まれており、ilasm によるラウンドトリップと互換性がないためです。
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT の WebAssembly 向けに、非同期継続(async continuation)用のミュータブルなグローバル変数を portable runtime 側で定義し、再配置可能な WASM オブジェクトでは正しいシンボル種別でインポートするようにする変更です。
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
WASI向けNative AOTのビルドで、wasi-emulated-getpid をリンクするように変更するPRです。ランタイムのソースをビルドする際(src/coreclr/CMakeLists.txt)に既にこのエミュレーションが定義されており、リンク時にも同じライブラリを指定する形に揃える修正です。
作成者によると、Native AOTでこれを同梱し続けるかどうかは未確定で、今後サイズを検討する段階で見直す可能性があります。
続きを読む
@MichalStrehovsky ・ GitHub ・ area-NativeAOT-coreclr
NativeAOTのUnix向け共有ライブラリで、最初のマネージドコード呼び出し(エクスポート関数の初回呼び出し)時にスタック保護用のGSクッキーが未初期化のまま使われ、abortする問題(#136201)を修正するPRです。遅延ランタイム初期化コールバックを登録する前にライブラリ用クッキーを初期化するようにし、ページサイズの取得もGC初期化から切り離しています。stackallocバッファを使う初回エクスポート呼び出しのテストも追加されています。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのfgRemoveUnreachableBlocksが、到達不能な BBF_DONT_REMOVE ブロックを空にして BBJ_THROW に変換する際、BBF_NEEDS_GCPOLL フラグが残ったままになる問題を修正します。
作成者の説明によると、このフラグはインライン化された Thread.FastPollGC() に由来し、クローンされた try エントリブロックに圧縮された後、RBO によって到達不能になったものです。空の throw ブロックに対して fgInsertGCPolls がインラインの GC ポールを挿入しようとし、fgCreateGCPoll が「最後のステートメント」を下位ブロックへ移動する際に null のステートメントを参照していました。修正として、ブロックのコードを削除する時点で GC ポール関連フラグをクリアします。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-System.Net.Sockets os-wasi
WASIには recvmsg が存在しないため、SystemNative_ReceiveMessage は recvfrom にフォールバックします。このフォールバックでは、アドレスバッファが NULL の場合でも addrlen に非 NULL のポインタを渡しており、wasi-libc はこの組み合わせを EINVAL で拒否していました。その結果、アドレスなしで ReceiveMessage を経由する UDP の Socket.ReceiveAsync が常に "Invalid argument" で失敗していました。本PRはアドレスバッファが無い場合に addrlen を NULL にして渡すよう修正します。変更が影響するのは CMSG_SPACE を持たない唯一のターゲットである WASI のパスのみです。
続きを読む
@sbomer ・ GitHub ・ linkable-framework area-Tools-ILLink
ILLink(trimmer)で、パス形式のアセンブリ名文字列(例: 親ディレクトリを指すパスなど)を、アセンブリ名参照の構築やロード済みキャッシュの参照より前に「未解決」として扱うようにする変更です。これにより、名前ベースの検索が親ディレクトリなどのパスを探索してしまうことを防ぎます。各呼び出し元の既存の未解決時の診断と、寛容なリフレクション探索の挙動は維持されます。明示的な参照ファイルパスや、作成済みのアセンブリ名参照の挙動は変更されません。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-ReadyToRun os-wasi
WASIホストのDebugビルドでは wasi_r2r_* アクセサが i32.const N; return; end にコンパイルされます(Releaseは i32.const N; end)。WasmModuleInfoReader がこの形式を拒否していたため、Debug CoreCLRのWASI ReadyToRun publishが The host does not export constant i32 function 'wasi_r2r_image_base' で失敗していました。本PRでは end の前にオプションの return を許容するようにリーダーを修正しています。
続きを読む
@asylkhan-azat ・ GitHub ・ area-System.Transactions community-contribution
System.Transactions.Local のトランザクションテーブルで使用していた独自実装の CheapUnfairReaderWriterLock を削除し、標準の ReaderWriterLockSlim に置き換える変更です。あわせて、トランザクションのハッシュ値の生成を、ロール管理とは独立したカウンターで行うようにしています。
@sbomer ・ GitHub ・ area-Infrastructure
main ブランチへのバッチ化された push ビルドで、既存のキャッシュ付き Release の analyzers / linker ジョブを Linux x64、Windows x64、macOS arm64 で実行するようにしました。これにより、新規 PR はコールドな初回実行で自前のキャッシュを作る必要がなく、ILLink とコンパイラのキャッシュスナップショットを共有ベースラインとして復元できます。
push による自動実行では、キャッシュ生成と無関係な developer-workflow 系ジョブをスキップします。PR 実行・手動実行の既存動作は維持され、キャッシュ対象ジョブとキャッシュキーは変更されていません。
続きを読む
@eiriktsarpalis ・ GitHub ・ area-System.Text.Json linkable-framework
src/libraries 全体に散在していたフレームワーク互換コード(ダウンレベル向けの条件分岐やローカルヘルパー)を、C# の extension-member polyfill(拡張メンバー)に集約するリファクタリングです(#136156 の続き)。呼び出し側はフレームワーク標準のAPI名で記述し、ダウンレベル実装は内部の polyfill コンテナに置かれます。対象ターゲットが元からそのメンバーを持つ場合は、引き続きフレームワーク実装にバインドされます。公開APIの変更と新規テストの追加はありません。
続きを読む
@rzikm ・ GitHub ・ area-System.IO.Compression
Zstandardのセッション単位のリセット(session-only reset)では、未使用のプレフィックスが保持されます。一方、マネージド側のエンコーダー/デコーダーはリセット時にピン留めしたメモリを解放するため、ネイティブコンテキストが「もうピン留めされていないメモリ」を参照し続ける問題がありました。また、プレフィックスを設定するとコンストラクターで渡した辞書が置き換えられますが、リセットしても辞書が復元されませんでした。
このPRでは、エンコーダー/デコーダー双方のリセット処理を修正しています。ピン留めメモリを解放する前に、元の辞書を復元するか、辞書が指定されていない場合はネイティブ側のプレフィックスを明示的にクリアします。あわせて、プレフィックスによる辞書の上書きと、リセット時の辞書復元の挙動をドキュメント化しています。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT の WASM ビルドで発生していた、数学関数(sin など)のシグネチャ不一致によるリンカ警告(wasm-ld: function signature mismatch: sin)を修正する PR です。x86 と WASM では数学関数呼び出しを専用のランタイムラッパー(浮動小数点の剰余ヘルパーを含む)経由にし、それ以外のアーキテクチャでは従来どおり libc を直接インポートします。
作成者によると、x86 では /alternatename によるリンカの仕組みで C ライブラリの関数名を維持していましたが、WASM は x86 Windows のシンボル名装飾を行わず sin がそのまま sin になるため、同じ方法は使えないとのことです。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-CodeGen-coreclr
JITの仮想vtable呼び出しのlowering処理を修正し、固定レジスタを持たないターゲットでも正しく動作するようにしました。作成者によると、StackTraces+TestLineNumbers:MethodWithMetadata のMinOptsコンパイル中に Assertion failed 'thisArgNode->OperIs(GT_PUTARG_REG)' が発生していたとのことです。作成者は、ReadyToRunではこのような仮想呼び出しを行わないのではないかと推測しており、Native AOTでもMinOptsでのみこの問題に遭遇するとしています。
続きを読む
@springmin ・ GitHub ・ linkable-framework community-contribution area-NativeAOT-coreclr
OpenHarmony(openharmony-* RID)をNativeAOT、crossgen2、パック生成、ILLinkのビルド経路に組み込むPRです。共有のターゲットOSパーサーでopenharmonyをLinuxにマップし、NDKのlldとohos ABIを使用します。CoreLibとランタイムパックは他のUnixターゲットと同様にReadyToRunのままとし、NTLMはマネージド実装を選択します。
続きを読む
@radekdoulik ・ GitHub ・ area-ReadyToRun
ReadyToRun(R2R)のビジビリティベースのコンパイルにおいて、System.String.Ctor という private static のファクトリメソッドをルートとして扱うように変更しました。
string の public コンストラクタは InternalCall であり、ネイティブの FCall マッピングを介してこれらのマネージドファクトリにつながっています。このマッピングは通常の IL 上の呼び出しエッジではないため、他のルートプロバイダーが供給しない限り、ビジビリティベースのルート化では private な実装がスキップされていました。この変更により、これらのファクトリのコンパイルが埋め込み記述子(embedded descriptor)の処理に依存しなくなります。
変更は static な System.String.Ctor メソッドに限定されています。既存のコンパイル可否チェックは維持され、ネイティブのディスパッチ方法や他の private メソッドのルート化には影響しません。
続きを読む
@asylkhan-azat ・ GitHub ・ area-System.Text.Json community-contribution
JsonArray の内部リスト(List<JsonNode?>)の遅延初期化における競合状態(race condition)を修正するPRです。JsonObject で適用済みの修正方法と同じアプローチをコピーしており、あわせて競合を検出するテストも追加されています。Issue #136117 を解決します。
@lewing ・ GitHub ・ area-CodeGen-coreclr
optRemoveRedundantZeroInits は、最初のストアより前にGCセーフポイントがないGCローカルについて、プロローグでのゼロ初期化を省略します。しかし IsPotentialGCSafePoint は例外をスローしうるツリー(GTF_EXCEPT)を無視していました。これらはthrowヘルパーを呼び出す可能性があり、throwヘルパーはGCセーフポイントです。その結果、未初期化のGCスロットがGCに報告されることがありました。
Wasm: フレーム上の全GCローカルが untracked として報告されます。Object.GetType では、GC一時変数への格納前に this のnullチェックが ThrowNullReferenceException を呼び、そこで発生したGCが古いスタック内容を報告し、TypeIntrinsics_r が pMT->Validate() でアサート失敗していました。
他ターゲット: 境界チェックの後にストアされる untracked(例: アドレス公開された)GCローカルで同様の問題が発生していました。
本PRは、全ターゲットで GTF_EXCEPT を持つツリーに対して IsPotentialGCSafePoint が true を返すようにします。
続きを読む
@springmin ・ GitHub ・ area-System.IO.Compression community-contribution
OpenHarmony のsysrootには qsort_r が存在せず、zstd の自動検出もこれを扱えないため、Android 向けに使われている ZSTD_USE_C90_QSORT の回避策を OpenHarmony でも再利用する変更です。作成者によると、openharmony-arm64 向けにネイティブライブラリをクロスビルドして確認したとのことです。
@svick ・ GitHub ・ area-Extensions-FileSystem
macOSで不安定だった PhysicalFileProviderTests.TokensFiredForNewDirectoryContentsOnRename テストの修正です。macOSの fseventsd はウォッチャー開始前の操作に由来する古いイベントを配信することがあり、「まだ発火していないはず」というアサーションが散発的に失敗していました。本PRはテスト側のみを修正しており、FileSystemWatcher / PhysicalFilesWatcher の実装は変更しません。
テストで fileSystemWatcher.Filter に、ランダム生成(GUID名)のテスト用エントリには一致しないパターンを設定してからウォッチを開始します。これにより、実際のネイティブイベント(fseventsd による事前作成イベントの遅延再送を含む)は抑制されます。一方、テストが明示的に注入する fileSystemWatcher.CallOnRenamed(...) は Filter によるマッチングを行わないため影響を受けません。この方式により、人工的な遅延や動的スキップを使わずに、リネーム前のアサーションをすべてのプラットフォームで決定的に有効なまま維持できます。
(PR本文では Filter を設定するコードの具体例は示されていないため、サンプルコードは省略します。)
続きを読む
@pcshrosbree ・ GitHub ・ area-ILTools-coreclr community-contribution
マネージド版 ilasm(src/tools/ilasm)が、.line ディレクティブのない .il ファイルに対してシーケンスポイントを一切出力せず、ステップ実行できない問題を修正します。ネイティブ ilasm と同様に、命令を emit する時点でその命令の .il ソース上の行(列 1〜2)にシーケンスポイントを記録し、.line / #include の扱いもネイティブに近づけます。
-DEBUG または -PDB 指定時、.line の対象外の命令ごとに、その .il 上の行へ暗黙のポイントを記録(同一行の命令は 1 つのポイントを共有。.line 直後の最初の命令は常にポイントを持つ)
メソッド末尾の命令の後の .line は、そのメソッドにはポイントを作らず次の命令に適用
クラス/トップレベルの .line は、次のメソッドの最初の命令に適用
#include されたファイルは独自の行・ドキュメント(フルパス)を持ち、.line 状態はインクルードをまたいで漏れない
不正なオペランドの命令はポイントを記録しない。同一オフセットのポイントは置換され、ポイント blob に同一オフセットが 2 つ入らない
続きを読む
@tannergooding ・ GitHub ・ area-System.Numerics.Tensors
System.Numerics.Tensors の dense(連続レイアウト)および strided(ストライド付き)テンソル操作に対する高速パスを拡張するPRです。テンソルの形状・オーバーラップ・走査順序・論理要素のセマンティクスは維持されます。dotnet/runtime#134914 と #135060 の修正・連続操作の最適化を土台にしています。公開APIシグネチャの変更はありません。
主な内容:
strided なソースを dense な宛先へ ResizeTo する場合はスパンのクリアを使用(非 dense な宛先では論理クリアを維持)
大きな dense テンソルを int サイズのチャンク単位で処理し、連続ランやスライスを再利用(コピー、反転、リダクション、述語、等価比較、乱数フィル、連結、スタック)
rank 1 向けのリニアオフセット高速パスを追加
数GB規模のテストに利用可能メモリの事前チェックと余裕を追加し、リモートプロセスでアロケーションを隔離、想定内のOOMはスキップ
続きを読む
@richlander ・ GitHub ・ area-Infrastructure
Linux x64 の Helix カバレッジのうち、Fedora のバージョンを 44 から 45 に更新するPRです。Fedora 44 は 2027年6月2日までサポートされます。Fedora 45 の固定 EOL 日は未公開で、2027年11月頃になる見込みと記載されています。fedora-45-helix-amd64 コンテナタグは MCR レジストリで確認済みで、sha256:256fcd76faa9078632f0b8c68374f2e9ee45242b9ee7f68bda5f0a51fc28bc90 に固定されています。
対象
スロット
変更前
変更後
Linux x64 Helix
Latest
Fedora 44
Fedora 45
続きを読む
@Copilot ・ GitHub ・ area-System.Net
ContentType.Name / ContentDisposition.FileName のシリアライズ時に、値が RFC 2047 のエンコード済みワードで始まるだけで「エンコード済み」と見なされ、引用符内にそのまま追記されていたため、" を含む値で MIME パラメータ(例: filename)をヘッダーに注入できる問題への対策です。エンコード済みワード判定の厳格化と、非該当値を GetTokenOrQuotedString(引用符のエスケープ処理あり)へ回す方針が中心です。
var ct = new ContentType("application/octet-stream");
ct.Name = "=?utf-8?Q?foo?=?evil\"; filename=\"foo.txt";
// 修正前: application/octet-stream; name="=?utf-8?Q?foo?=?evil"; filename="foo.txt"
// (攻撃者が制御する filename パラメータが注入される)
続きを読む
2026年10月21日 (35 PRs) うち Bot 7 件 この日のページ →
@jkoritzinsky ・ GitHub ・ area-Infrastructure
Copilot向けの指示ファイル(conventions.instructions.md)のコメントに関するガイダンスを修正するPRです。過去の実装に関する履歴的な説明は、ソースコードのコメントではなく annotate_diff_line ツールを使って記載するよう明確化しています。ツールが利用できない場合は、ソースコメントとして残さず、その説明自体を省略するよう指示しています。
これにより、CopilotがPRに履歴的な説明コメントを追加してしまうことを避けつつ、Copilotを操作している人間のコーディネーターには見える形を維持する狙いです。
続きを読む
@ViveliDuCh ・ GitHub ・ Servicing-approved area-Infrastructure-libraries
release/10.0 ブランチのビルド・パッケージングで使用される System.Security.Cryptography.Pkcs の依存バージョンを 9.0.21 に更新するPRです。これらのプロジェクトは NuGet.Packaging/7.0.3-rc.46203 経由で Pkcs 9.0.6 を推移的に解決しており、公開済みの脆弱性アドバイザリ(GHSA-846f-f764-76mx、GHSA-2fmv-rv2c-59x7)により NU1902/NU1903 が発生し、warnings-as-errors ポリシーのためWindows/Linuxのビルドが失敗していました。直接の PackageReference でパッチ済みバージョンを選択することで、NuGetツールセットの変更や脆弱性監査の抑制をせずに解消しています。
続きを読む
@ViveliDuCh ・ GitHub ・ Servicing-approved area-Infrastructure-libraries
Microsoft.Native.Quic.MsQuic.Schannel のバージョンを定義するプロパティ MicrosoftNativeQuicMsQuicSchannelVersion を 2.5.11 から 2.5.12 に更新する release/10.0 向けのバックポートです(main の #135749 に対応)。2.5.11 には GHSA-2mxg-prvg-9jfg(CVE-2026-85790)が報告されており、この脆弱性の影響で NuGet の監査警告 NU1902 が警告をエラーとして扱う設定下で restore を失敗させていました。2.5.12 は修正済みのバージョンです。マネージドコードの変更はありません。
続きを読む
@alinpahontu2912 ・ GitHub ・ area-System.IO.Compression
ZIPエントリの暗号化状態チェックを整理する小規模なリファクタリングです。AES判定を EncryptionMethod を中心に統一し、冗長な状態判定を削除しています。同期・非同期の読み取り/書き込み/更新の各パスで一貫した形に揃えています。
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
CIにおいて、native AOT WASI向けのテストをビルドのみ有効化するPull Requestです。作成者によると、UnitTestsにruntime asyncへの参照が含まれていることに加え、別の箇所でJITに関するアサートが発生するため、UnitTestsはビルドできない状態です。そのため、暫定対応として一部を除外しています(「This is just for now」とのこと)。
@jkoritzinsky ・ GitHub ・ area-ILTools-coreclr
IL ラウンドトリップテスト向けの「managed-only ilasm」除外の仕組み(プロパティ、マーカー処理、ラッパー内のチェック、関連ドキュメント)を削除するPRです。あわせて、gentype テストは意図的に無効なメタデータを生成するため、IL ラウンドトリップ非対応として明示的にマークしています。
@jkoritzinsky ・ GitHub ・ os-windows area-VM-coreclr
IJW(C++/CLI)のネイティブTLS(スレッドローカルストレージ)静的フィールドへのアクセスをサポートするための変更です。関連Issue(#133538、#42187)を修正する対応で、CoreCLRのJITヘルパー関連のコードに追加が行われています。提供された情報からは、実装の詳細な動作までは確認できません。
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify が、インターフェイスを実装した型から、そのインターフェイスの protected(family)メンバーを呼び出すコードを MethodAccess エラーとして拒否していた問題を修正します。ランタイム(ClassLoader::CanAccessFamily)はこの呼び出しを許可しているため、ILVerify のアクセスチェックをランタイムの挙動に揃えます。
AccessVerificationHelpers.cs の CanAccessFamily は、対象の型定義を現在の型の基底型の中からしか探していませんでした。対象がインターフェイスの場合は、現在の型の RuntimeInterfaces の中から型定義で比較するように変更しています。これにより、ジェネリックインターフェイスの別のインスタンス化でも許可されます。RuntimeInterfaces には基底クラスや他のインターフェイスから継承したインターフェイスも含まれ、入れ子型は既存の外側の型へのループでカバーされます。
続きを読む
@ViveliDuCh ・ GitHub ・ Servicing-approved area-System.Security
release/8.0 ブランチにおいて、10月のOOB(Out-of-Band)パッケージ生成設定をリセットし、11月のサービシングに備える定例のパッケージ作成クリーンアップです。すでに公開済みのOOBパッケージが後続のビルドで不要に再生成されることを防ぐため、3つのライブラリプロジェクトの GeneratePackageOnBuild を true から false に変更します。
@asylkhan-azat ・ GitHub ・ area-System.Text.Json community-contribution
System.Text.Json の JsonArray / JsonObject の GetUnderlyingRepresentation で使用していたメモリバリアを、Interlocked.MemoryBarrier から Volatile.ReadBarrier に置き換える変更です(.NET 10+ 向け)。読み取り側に必要な最小限のバリアへ切り替えることが意図と考えられます。
なお、提供された情報にはサンプルコードや詳細な変更差分は含まれていません。
続きを読む
@vitek-karas ・ GitHub ・ area-Build-mono
Windowsのbrowserライブラリテスト用CIジョブで、WebAssembly.Browser.HotReload.Test.zip がビルドされているにもかかわらず、Helixに投入されずHotReloadの機能テストが実行されていなかった問題を修正します。継承された機能テスト用プロパティによりZIPが runonly ディレクトリに配置されており、Helixは同ディレクトリ内の .Sample.zip のみを対象とするため選択されていませんでした。HotReloadプロジェクト側でアーカイブ関連プロパティを上書きし、ZIPの出力先を browseronly に変更することで、既存のbrowser用セレクタが対象に含めるようになります。テストランナー、期待される終了コード、非Windows CIでの除外設定は変更していません。
続きを読む
@Psyk0loge ・ GitHub ・ area-Interop-coreclr community-contribution
Preview 4 でリグレッションしていた COM IDispatch プロパティセッターの動作を修正する PR です。LateBoundCLRToCOM_ILStubState::GetInfoFromMetadata(#126330 で導入)の msSetter ケースで、binderFlags = BINDER_SetProperty; と代入していたため、先に設定されていた BINDER_IgnoreReturn フラグが上書きされていました。これを binderFlags |= BINDER_SetProperty; に変更し、フラグを保持するようにしています。
BINDER_IgnoreReturn が失われると、InvokeDispMethod が COM の戻り値を System.Void に変換しようとして OleAutBinder.ChangeType で COMException (0x80020005): Type mismatch が発生していました。
// Before (broken):
binderFlags = BINDER_SetProperty;
// After (fixed):
binderFlags |= BINDER_SetProperty;
続きを読む
@pcshrosbree ・ GitHub ・ area-VM-coreclr community-contribution
ILVerify が calli、mkrefany、refanyval、refanytype に到達した時点でメソッドの検証を中断していた問題を修正し、これらの命令に対する検証ロジックを追加して検証を継続するようにします。calli は(ランタイムが関数ポインタの寿命を追跡しないため)常に Unverifiable として報告されますが、呼び出し箇所の引数不一致などのエラーは引き続き報告されます。arglist は変更しておらず、ImportArgList は従来どおり "RuntimeArgumentHandle not supported in .NET Core" を throw します。
続きを読む
@Copilot ・ GitHub ・ area-NativeAOT-coreclr
NativeAOTの MethodInvoker.Invoke(object?, Span<object?>) は、オープンジェネリックメソッドに対して引数の数が誤っている場合に InvalidOperationException をスローしていました。これはCoreCLRや固定アリティのオーバーロードの挙動と異なります。本PRでは、ディスパッチ前に引数の数を検証し、既存のスローヘルパーを使って TargetParameterCountException をスローするよう修正します。引数の数が正しい場合は従来どおり InvalidOperationException が維持されます。
続きを読む
@JulieLeeMSFT ・ GitHub ・ area-CodeGen-coreclr
最適化+インストルメント済みコンパイル(OSR+PGO、TieredPGO_InstrumentedTierAlwaysOptimized、JitInstrumentIfOptimizing など)において、プローブ対象の呼び出しが devirtualize されない問題を修正します。これにより JIT/opt/GuardedDevirtualization/badinlinee が rolling jitstress パイプラインで Test allocated 24000 bytes と失敗していた件(#135557)を解消します。作成者によれば原因は3つ独立して存在し、本PRは (1) JIT の修正、(2) JitStress 下でのテストのスキップ、(3) テストの壁時計依存の解消、の3点でそれぞれ対処しています。
従来は impConsiderCallProbe を devirtualize の前 に呼び、プローブ対象にした呼び出しは impDevirtualizeCall をスキップしていました。そのため this が型情報のない一時変数に退避され、後段の devirtualization やインライン化が失敗し、new Base().M() のアロケーションが残っていました。
修正後は先に devirtualize を試み、それでも仮想呼び出しのまま残るものだけをプローブ対象にします。
続きを読む
@agocke ・ GitHub ・ area-NativeAOT-coreclr
Unix x64 の NativeAOT において、現在のプロシージャのエントリへの直接ジャンプ(再帰的な fast tail call)を tail-call epilogue として認識するよう修正します。
従来の TrailingEpilogueInstructionsCount はプロシージャのアドレス範囲外への直接ジャンプのみを認識し、自身のエントリへのジャンプを除外していました。再帰的 fast tail call ではフレームを復元してからエントリへジャンプするため、この epilogue を通常のメソッド本体のコードとして扱うと、return address hijacking が部分的に解体されたフレームに対して本体の unwind 情報を使用し、誤ったスタックスロットを選択する可能性がありました。
下限の比較を < から <= に変更することで、既存のコメントおよび Windows x64 の unwinder における自己エントリへのジャンプの扱いと整合させています。これにより既存の epilogue 経路が、現在のスタックポインタと残りの pop から return address スロットを特定できるようになります。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT向けに、専用のWASMリンカーバックエンド(初期サポートはWASI)をビルド統合として追加するPRです。WASI SDKのClangとllvm-ar、移植可能なランタイムアーカイブ、必要なネイティブ依存を使い、wasm32-wasip2をターゲットとする.wasmコンポーネントを生成します。アーキテクチャ選択はWASI用ツールチェーン設定とは分離されており、すべてのWASMをWASIとして扱うものでも、ブラウザ向けリンクを追加するものでもありません。SDKの場所はWASI_SDK_PATHで指定します。
続きを読む
@simonrozsival ・ GitHub ・ area-System.Net.Security os-android
Android上での証明書チェーン構築時、AndroidCAStore 全体を列挙して全トラストアンカーを実体化する処理を避け、渡された証明書から特定できるシステムのトラストアンカーのみで PKIXBuilderParameters を構築するよう変更しています。調査対象の Samsung A16 では、この全件列挙のセットアップに約123msかかり、その後のパス構築より大幅に重い処理でした。公開APIの変更はありません。
続きを読む
@MichalStrehovsky ・ GitHub ・ area-NativeAOT-coreclr
NativeAOT のリフレクションメタデータにおける名前空間の保持方法を変更するPRです。名前空間を . 区切りのパーツごとのツリー構造で保持する方式をやめ、完全な文字列としてフラットに保持します。あわせて、TypeDefinition / TypeForward をハッシュテーブルに格納することで、型検索のパフォーマンス低下を避ける設計になっています(作成者によると、ハッシュテーブルはパーツ単位の名前空間表現よりも検索で優位になるとのことです)。
続きを読む
@eiriktsarpalis ・ GitHub ・ area-System.Text.Json
System.Text.Jsonは、参照保持(reference preservation)またはポリモーフィックデシリアライズが有効な場合、メタデータと競合しない名前も含めて$で始まるすべてのプロパティ名を拒否していました。本PRでは既存の「完全一致のメタデータ判定」を利用するよう変更し、認識されたメタデータプロパティ($id、$ref、$values、$typeなど)は従来どおり検証し、無関係な$始まりの名前は通常のプロパティとして処理します。また、カスタムの型識別子名が設定されている場合、$typeはメタデータではなく通常のプロパティとして扱われます。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT/WASM において、インターフェイスメソッド呼び出しを任意シグネチャの RhpInterfaceDispatch スタブ経由ではなく、インターフェイスターゲットを解決したうえで実際のメソッドシグネチャで間接呼び出し する方式に変更します。Console.WriteLine の hello world を WASI/NativeAOT でコンパイル・リンク・実行可能にするための一連の PR の一部です。
ILC が CORINFO_VIRTUALCALL_LDVIRTFTN を報告し、具象/ジェネリックのディスパッチセル参照を保持し、null インスタンスチェックを要求します。
RyuJIT はレシーバーとセルを CORINFO_HELP_INTERFACELOOKUP_FOR_SLOT に渡します。Wasm ではこれを未対応の高速ヘルパーではなく、既存の固定シグネチャ RhpResolveInterfaceMethod にマップします。
既存のジェネリック仮想メソッドのパスは維持されます。
クラス仮想メソッドの ldvirtftn(クラス仮想メソッドにバインドされたデリゲートなど)でも、NativeAOT Wasm の既存の ReadyToRun リゾルバーを有効化します。
非 Wasm の NativeAOT のスタブ選択と CoreCLR Wasm のフォールバックは維持されます。
続きを読む
@pcshrosbree ・ GitHub ・ area-CodeGen-coreclr community-contribution
catchブロックの終了時にスレッド中断(ThreadAbort)が保留されている場合、ランタイムはcatchの戻り先アドレスから中断を再送出し、そのアドレスに対応するハンドラを検索します。JITはこの戻り先ブロックを関連するEH領域内に配置していますが、そのブロックがコード生成上で命令を1つも出力しない 場合、戻り先アドレスが後続コードに属してしまい、abortが誤った位置から発生したものとして扱われます。
この問題は、未最適化コード(tier 0、JITMinOpts、デバッグ可能コード)と、一部の最適化コード(GC.KeepAliveのみのブロック、try領域の先頭ブロック、xarchでのemitRemoveJumpToNextInstによるジャンプ除去など)で発生します。その結果、finallyが実行されない、外側のcatchがabortを受け取れない、catch直後のtryが誤って捕捉する、といった誤動作が起きます。
本PRは genEmitEndBlock で、catchの戻り先となる BBJ_ALWAYS ブロックが命令を出力していない場合、次ブロックへのジャンプが省略されるなら nop を出力し、そうでなければジャンプを削除可能としてマークしないようにします。判定は次ブロックのEH領域には依存しません。
続きを読む
@adamperlin ・ GitHub ・ arch-wasm area-CodeGen-coreclr
WebAssembly (Wasm) 向けJITのレジスタ割り当てにおいて、GCセーフポイントをまたいで生存しない(GCから見える必要のない)追跡対象のGC参照ローカル変数を、固定されたスタックスロットではなくWasmの local に割り当て可能にする変更です。セーフポイントでライブなGC参照ローカルは従来どおり固定スタックホームを使用します。そのために、GC参照ローカルの生存解析を行う独立したフェーズ(WasmGCLiveness)を新設し、後続の2つのフェーズがその結果を利用します。
続きを読む
@pavelsavara ・ GitHub ・ area-Codegen-AOT-mono
Mono AOT(mono-aot-cross)が gsharedvt ラッパーのシグネチャを構築する際、値型フィールドやジェネリック型引数を再帰的に正規化します。get_wrapper_shared_vtype() と get_wrapper_shared_type_full() が相互に呼び合い、自己再帰的なジェネリック値型でネイティブスタックオーバーフローが発生する問題を修正します。#135029 を #135371 でリバートした後の再導入で、回帰テストを修正しています。
問題となる有効な型の例:
struct GenericFieldBox<T>
{
public object Value;
}
struct SelfRecursive
{
public GenericFieldBox<SelfRecursive> Value;
}
修正では、正規化中の値型をスタック上のチェーンとして保持します。同じ型への再入、または各レベルで形状が成長するジェネリックで深さ上限に達した場合は、既存の「元の型を維持する」フォールバックを使います。
続きを読む
@adamperlin ・ GitHub ・ area-CodeGen-coreclr
WASM向けのSuperPMIコレクションを、従来のCoreLibのみから、ライブラリアセンブリ全体のcomposite crossgen2コンパイルへ拡張するPRです。#132538(@AndyAyersMS)の継続で、主な変更はレビュー指摘への対応とのことです。これによりWasm向けのメソッドコンテキスト数を大幅に増やすことを狙っています。JIT-EEのGUIDを更新し、旧corelibコレクションではなく新しいコレクションが使われるようにしています。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-ReadyToRun
WebAssembly (wasm) の R2R コードでは、明示的な tail. 呼び出しが return_call になります。しかし R2R とインタプリタ間の遷移は通常の呼び出しを使うため、フレームが蓄積され、これらをまたぐ深い末尾再帰でスタックオーバーフローが発生します。
この PR では、crossgen2 が明示的な tail call を含む wasm メソッドを拒否するようにしました。reportTailCallDecision から RequiresRuntimeJitException を送出します(R2R のみ)。該当メソッドは、tail call を扱えるインタプリタに任されます。
続きを読む
@rcj1 ・ GitHub ・ area-Diagnostics-coreclr
DBI(Debugger Interface)に残っていた TARGET_* ifdef を除去する変更です。ifdef は次の4種類に分類されています。
本来はホスト側の条件であるもの:HOST_* に変更
実際にターゲット情報を表すもの:新規 DacDbi API GetTargetInfo で実行時に取得
ライブデバッグ(ホストとターゲットが同一):HOST_* に変更
レジスタ/コンテキスト関連:別PR #130367 で対応
IDacDbiInterface::GetTargetInfo(アーキテクチャ・OS・ポインタサイズ)を IDL/ヘッダ/DAC 実装/cDAC Legacy のマネージド実装に追加し、RS/shim 側でこれを使って分岐するようになります。
続きを読む
@tannergooding ・ GitHub ・ area-CodeGen-coreclr Priority:2
JITのlowering(LowerHWIntrinsicCreate)において、一部の要素のみが定数である Vector*.Create(...) を、従来の「CreateScalarUnsafe から始まる insert の連鎖」ではなく、CNS_VEC(定数ベクタ)+非定数要素の WithElement 挿入 として具体化するよう変更しています。
例えば Vector128.Create(1, 2, 3, x) は、従来は4回の insert でしたが、変更後は CNS_VEC と x 用の WithElement 1回になります。
// 変更後: 定数部分は CNS_VEC、x のみ WithElement で挿入される
Vector128<int> v = Vector128.Create(1, 2, 3, x);
続きを読む
2026年10月20日 (50 PRs) うち Bot 5 件 この日のページ →
@radekdoulik ・ GitHub ・ area-CodeGen-Interpreter-coreclr
インタープリターの継続ハンドラー(通常/ジェネリックの両継続opcodeが共有)で、await が同期的に完了して中断しない場合に、初期化済みのローカル(byref-like ローカルを含む)が誤ってゼロクリアされる問題の修正です。「継続なし」の高速パスを、ローカルのゼロクリアより前に移動しました。実際に中断する場合は、従来どおり継続処理の前にゼロクリアします。Resolves dotnet/runtime#136171。
続きを読む
@ViveliDuCh ・ GitHub ・ Servicing-approved area-System.Threading
release/8.0ブランチにおいて、Mono上でファイルバックの名前付きMutexに関するテスト2件をスキップするようにする変更です。Monoの名前付きMutex実装は共有メモリのバッキングファイルを使用しないため、これらのテストはMonoには適用されません。テストコードのみの変更です。
@rcj1 ・ GitHub ・ area-Diagnostics-cdac
WebAssembly (WASM) の R2R アンウィンドデータ検索を、専用の「制御PCのみ」の検索経路から、既存の ExecutionManager のハンドルベース API を再利用する形に統一する変更です。他アーキテクチャと同じ検索パターンに揃え、IExecutionManager.TryGetUnwindInfo とその実装を削除します。
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerifyが、配列ではないオペランド(例: string)を ldelem.* / stelem.* / ldelema に渡された場合に InvalidCastException でクラッシュする問題を修正します。修正後は ExpectedArray を報告し、そのメソッドの検証を中断します。また、null配列に対する有効な ldelem.ref で NullReferenceException が発生する問題も修正します。
クラッシュを再現するILの例:
.method public static void M() cil managed
{
ldstr "a"
ldc.i4.0
ldelem.i4
pop
ret
}
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
NativeAOTが「書き込まれない static フィールドは readonly である」と推論した場合に、そのフィールドの volatile 読み取りまで定数畳み込みされ、acquire セマンティクスが失われる問題を修正します。これにより、後続のロードがスピンループの外へホイスト(巻き上げ)される回帰が発生していました(#135724 のコメントで報告)。修正として、volatile アクセスの場合は readonly フィールドの畳み込みをスキップします。
続きを読む
@am11 ・ GitHub ・ area-PAL-coreclr community-contribution
ネイティブライブラリ、CoreCLR PAL、GCのビルド構成から、使用されていないCMakeの機能検出(プローブ)と設定値を削除するクリーンアップです。生成ヘッダーの対応する定義や、クロスコンパイル用のキャッシュエントリも併せて整理されています。ランタイムの公開API・動作に関わる変更ではなく、ビルドシステム内部の整理です。
@rzikm ・ GitHub ・ area-System.Net.Security
TlsSessionTests.cs を修正し、AcceptWithDefaultValidation_CertificateContextTrust_HonorsChainPolicy テストの失敗(#136096 )に対処するPull Requestです。変更は1ファイルの1行削除のみです。
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerification.Tests のテストローダー(TestDataLoader)が、_Invalid_ メソッド名に含まれる期待エラー名を Enum.TryParse で解析し、VerifierError に該当しない名前を黙って無視していた問題を修正します。無視されると、テストが名前に書かれたより少ないエラーしか期待せず、スペルミスなどでテストが弱体化してしまうためです。本PRはテストのみの変更で、不明なエラー名があればテスト名と不明な名前を含むメッセージで例外を投げるようにします。
出力例:
System.ArgumentException : Test 'StoreLocUninit' expects 'StackUninit', which is not a VerifierError.
続きを読む
@springmin ・ GitHub ・ area-VM-coreclr community-contribution
OpenHarmony 上の CoreCLR で EnableWriteXorExecute(W^X)のデフォルト値を 0 にする変更です。
W^X アロケーターは、memfd をバックにした同一ページを「読み書き用ビュー」と「読み取り+実行用ビュー」の二重マッピングで管理します。
OpenHarmony のサンドボックスは、ファイルバックのマッピングへの PROT_EXEC を拒否します(匿名の実行可能メモリは許可)。そのため実行用ビューを作成できず、JIT コンパイルされたコードを実行できません。
既存の RISC-V 向けの条件(デフォルト 0 で RWX アロケーターを選択)に TARGET_OPENHARMONY を加え、OpenHarmony ビルドで JIT が追加設定なしに動作するようにします。
ノブ自体は変更されておらず、DOTNET_EnableWriteXorExecute=1 を指定すれば引き続き W^X を要求できます。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-Infrastructure
WASI向けビルドの DefaultCoreClrSubsets に Native AOT を追加するPRです。あわせて、サブセット一覧の並び順を整理し、ブロック冒頭の無条件版とWASI固有版を比較しやすくしています。この変更後、両者の差異は「WASIでは libs.native をCoreCLRの一部として扱う」点だけになります。
@MichalStrehovsky ・ GitHub ・ area-NativeAOT-coreclr
NativeAOTにおけるデフォルトインターフェイスメソッド(DIM)のinstantiating thunkの配置先を、ジェネリックなインターフェイス自身ではなく、非ジェネリックな System.Object に変更する修正です。thunkがジェネリック型上にあると「instantiating argumentが必要かどうか」の判定で問題が生じ(実際には不要)、それを打ち消すための特殊処理が多数必要になるため、これを回避する局所的な修正として行われています。Issue #136073 を修正します。
作成者によると、この方法は複数オブジェクトファイル(multi-obj)モードでは機能せず、これらのthunkがすべてCoreLib.objにコンパイルされるように見える制限がありますが、他の事情を考慮すれば許容できるとされています。
続きを読む
@Copilot ・ GitHub ・ area-NativeAOT-coreclr
NativeAOT では、第1引数が参照型以外(値型など)の closed static delegate が受け入れられ、メソッドが値を期待する箇所にオブジェクト参照が渡されていました。CoreCLR ではこのバインドは拒否されます。本PRは NativeAOT の動作を CoreCLR に揃え、該当するバインドを拒否します。
第1引数が値型・byref・ポインター・関数ポインターの場合は、null ターゲットも含めて拒否されます。
例外をスローするオーバーロードは ArgumentException を報告します。
throwOnBindFailure: false の場合は null を返します。
続きを読む
@tannergooding ・ GitHub ・ area-CodeGen-coreclr
JITが使用するx86命令メタデータを修正するPRです。対象は、メモリサイズ、EVEX圧縮ディスプレースメント(compressed displacement)、マスキング、オペランドマッピングです。
特に VPMULDQ / VPMULUDQ は64ビットのブロードキャストメモリオペランドを使うため、JITは圧縮ディスプレースメントを8バイト単位でスケールする必要があります。この修正に合わせて、隣接フィールドのケースを検証する AVX-512 向けの符号付き・符号なし回帰テストを追加しています。あわせて関連する命令メタデータを修正し、EVEXのサイズ計算とLoweringのために quarter-width tuple(1/4幅タプル)の扱いを追加しています。
続きを読む
@lewing ・ GitHub ・ area-System.Security
EncryptedXml_DecryptDocument_MaxCount_Default(#135741で追加)は、通常の [Fact] から RemoteExecutor.Invoke を呼び出していたため、RemoteExecutorがサポートされない環境(例:runtime-coreclr crossgen2 のouterloop R2Rライブラリ実行)で PlatformNotSupportedException が発生していました。本PRでは属性を [ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))] に変更し、RemoteExecutorが非対応の環境ではテストがスキップされるようにします。同系統の _AppContext テストと同じ方式に揃えた変更です。
// 変更後の属性
[ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))]
続きを読む
@pcshrosbree ・ GitHub ・ area-System.Numerics community-contribution
ControlledExecutionTests.CancelInTryAndExitCatchNormally に IsMultithreadingSupported の条件を付け、スレッドが使えない環境(シングルスレッドのbrowser-wasm)ではテストをスキップするようにする1行の修正です。#135939 のマージ以降、browser-wasm CIの System.Runtime.Tests がタイムアウトしており、その原因と推測される問題への対応です。PR自体のブラウザCI実行で、タイムアウトが解消するかどうかが確認されます。
続きを読む
@agocke ・ GitHub ・ area-Infrastructure-coreclr
CIパイプラインにおいて、Roslynコンパイラキャッシュの統計レポートが、ランタイムテストのビルド前 に出力されていたため、テストのコンパイル分が集計から漏れていました。このPRは、統計レポートのステップをランタイムテストのビルド後 へ移動します。キャッシュの設定やビルドの挙動自体は変更されません。
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify に --list-errors オプションを追加します。--ignore-error / --ignore-error-file は正規表現でエラー名にマッチさせますが、その名前を確認する手段がなかったため、一覧を出力できるようにしました。Issue #136056 では --help --verbose が提案されていましたが、代替案として挙げられていた独立オプションを採用しています。--verbose の意味は従来どおり変わりません。
None を除くすべての VerifierError 名を Strings.resx のメッセージ付きで出力
すべての ExceptionStringID 名(型システムエラー)を出力
上記どちらの名前も持たないエラーは None にマッチする旨を出力
--help と同様に入力ファイルなしで動作します。入力ファイルを併せて指定した場合は、一覧を出力するのみで検証は行いません。また、メッセージ中の '{0}' などのプレースホルダー(5件)は、実際のエラー報告時に ILVerify が埋めるものであり、一覧では未置換のまま表示されます。
出力例:
Verification errors (--ignore-error matches these names):
UnknownOpcode: Unknown opcode.
...
Type system errors (--ignore-error also matches these names):
ClassLoadGeneral
...
An error with neither kind of name, such as an exception while verifying a method, matches None.
続きを読む
@equmagg ・ GitHub ・ area-System.Collections community-contribution
ImmutableArray<T>.Builder で RemoveRange や RemoveAll などの一括削除を行った後、Count 以降のバッキング配列に削除済みの値が残る不具合を修正するPRです。Count を増やすとその残存値が露出し、「追加された要素は default(T) で初期化される」というドキュメント上の保証に反していました。また、削除された参照がバッキング配列に残り続ける問題もありました。
var builder = ImmutableArray.Create(1, 2, 3, 4).ToBuilder();
builder.RemoveRange(1, 2);
builder.Count = 4;
Console.WriteLine(string.Join(", ", builder));
// 期待値: 1, 4, 0, 0
// 修正前: 1, 4, 3, 4
.NET 9、.NET 10、.NET 11 RC2 で再現が確認されており、以前から存在する問題とのことです。
続きを読む
@SwapnilGaikwad ・ GitHub ・ area-VM-coreclr community-contribution
ランタイムの一部の経路では、PromoteCarefully を経由せずにスタック内部参照(stack-interior references)を報告するため、cDAC側とランタイム側でフィルタリングが非対称になっていました。比較前に両方の結果からこれらの参照を除外することで、cDAC ストレステストの誤検知(false failure)を防ぎます。作成者によれば、#135959 で失敗していたCIパイプラインへの対処であり、本PRはcodexの支援で作成されています。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Http
HttpListener の拡張保護(extended protection)セレクタがNTLMハンドシェイクの途中でポリシーを変更した場合、従来は400を返していました。Windows Server 2019 (RS5) では、古いコンテキストが破棄され、その継続トークンが新しいコンテキストに渡されて InvalidToken が返り、マネージド側のクライアント障害マッピングが400を選択していたためです。
本PRでは、進行中の同一パッケージのコンテキストがポリシー非互換になった場合に、401と新しいチャレンジで認証を再開するよう変更しています。古いコンテキストは、弱いポリシーのまま再利用せず、切り離して破棄します。新規の不正トークンに対する既存のマッピング(400)は変更されません。
続きを読む
@Copilot ・ GitHub ・ area-System.Collections tenet-performance
ImmutableList<T>(およびそのBuilder)の全体反転 Reverse() が、これまでO(n log n)のインデックス指定スワップで実装されていた点を、ツリーをミラーリングする方式に変更し、各ノードを1回だけ訪問するO(n)にしています。AVLバランスは維持されます。部分範囲の反転は従来のまま変更されていません。
実装は次の方針です。
コピーオンライトで、frozen(凍結)済みの内部ノードはクローンし、リーフは再利用する
未凍結のBuilderノードはその場で反転する
全範囲を対象とするオーバーロードのみ、この経路を通す
続きを読む
@lewing ・ GitHub ・ arch-wasm area-ReadyToRun
Wasm(portable entrypoints)のR2R環境で、同一型の .override(MethodImpl)によってリダイレクトされたvtableスロットを経由する呼び出しが、実装ではなく宣言側メソッドを実行・準備してしまう問題を修正します。非portableターゲットでは宣言のvtableスロットが実装のentrypointを保持するため問題になりませんが、portable entrypointsでは以下の3つの経路で宣言側が処理されていました(self_override5で再現)。
ExternalMethodFixupWorker : スロットを読む前に宣言側をprestubしており、宣言自身のR2Rボディを公開し、Checkedビルドでassertしていました。修正後は、スロットを読み、そのentryを所有するメソッドを準備して、セルをそれでパッチします(非portable分岐と同様)。
ExecuteInterpretedMethodWithArgs_PortableEntryPoint_Complex (R2R → インタープリタ): 宣言側を準備・実行していました(例: 名前で宣言にバインドされたdelegate)。修正後は、PrepareInterpreterCode と同様に、先に宣言→実装のマッピングを行います。
同entryの早期パス : 実装のインタープリタコードが宣言側に格納されている場合にCheckedでassertしていました(既存の問題)。修正後は、そのコードを所有するメソッドとして実行します。
続きを読む
@lewing ・ GitHub ・ area-CodeGen-coreclr
ReadyToRun(R2R)コードで CORINFO_HELP_BOX_NULLABLE のインライン展開を有効化する変更です。クラスハンドルを直接埋め込む代わりに、box T と同じ経路(基底型のトークン経由)でアロケーションを行います。これにより、既存のエスケープ解析が対象となるヒープ割り当てを除去できるようになります。
作成者によると、box int? は browser-wasm および tiering なしのネイティブ R2R でおよそ 30 倍高速化されたとのことです。ios 系ターゲットは CoreCLR を composite R2R として公開するため同じコード生成になりますが、実機での計測は行われていません。
続きを読む
@lagudafuadtosin ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify が IgnoresAccessChecksToAttribute を尊重するようになり、ランタイムと同様にこの属性が付与するアクセス権を許可します(#130959 の修正)。通常の可視性チェックの後(最後)に判定され、属性が公開鍵を指定している場合のみ公開鍵の一致が要求されます。
@pcshrosbree ・ GitHub ・ area-CodeGen-coreclr community-contribution
x86 JITのエピローグで lea esp, [ebp] を mov esp, ebp に書き換えないよう修正するPRです。#135793 で「変位0・ベースのみのLEAをレジスタ移動に書き換える」最適化が入りましたが、AMD64では rsp, [rbp] が例外になっていた一方、x86には同じ例外がありませんでした。
localloc を使い、EBP以外のcallee-saved registerをpushしないメソッドは、エピローグで lea esp, [ebp-0] によりESPを復元します。
x86のGC-infoエピローグデコーダ(gc_unwind_x86.inl の UnwindEbpDoubleAlignFrameEpilog)は、checkedビルドでこの命令のバイト列を検証し、変位0の場合は3バイトをスキップします。cDACの X86Unwinder も同様です。
#135793 後は mov esp, ebp が出力されるため、このようなエピローグでスレッドがGCサスペンドのhijackを受けると、checkedランタイムが SKIP_LEA_ESP_EBP でassertします。windows-x86 checkedの System.Text.Json.Tests と System.Runtime.Tests で発生したとのことです(詳細は #136020)。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-Host os-wasi
CoreCLR の WASI ホスト(wasihost)が RUNTIME_IDENTIFIER を設定していなかったため、RuntimeInformation.RuntimeIdentifier が "unknown" を返していた問題を修正します。ホストが wasi-wasm(Mono の WASI ドライバーと同じ値)を設定するようになり、あわせて ENTRY_ASSEMBLY_NAME も corerun や hostpolicy と同様に get_runtime_property から提供されます。また、#134964 で追加された runtimeconfig.bin リーダーを堅牢化しています。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-CodeGen-coreclr
Wasmにおいて、単一レジスタで返される構造体の呼び出し結果ストア(LowerStoreSingleRegCallStruct)が、構造体のWasm ABI型(4バイト未満の構造体やオブジェクト参照をラップする構造体では i32)に型を変更していた問題の修正です。
この問題により、Half や1バイト構造体のストアが4バイト書き込みとなって隣接領域を破壊していました(インプレースの TensorPrimitives.Tan<Half> で次の入力がゼロになる)。また、オブジェクト参照のストアではGC write barrierが失われていました(Wasmのオブジェクトは現状gen0に留まるため、現時点では実害なし)。
修正は LoongArch64/RISC-V64 と同じルールを採用し、構造体自身のレジスタ型を維持しつつ、float戻り値の場合のみ呼び出しの型を採用します。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-System.Globalization os-browser
SystemJS_GetLocaleInfo は C およびマネージド interop 側では (locale, culture, ...)(記述対象のロケール、次に表示言語)と宣言されていますが、TypeScript 実装と CoreLib の呼び出し側は (culture, locale, ...) の順で使っていました。リポジトリ内では両者の入れ替わりが打ち消し合って動作していましたが、宣言どおりに呼び出すと結果が誤っていました(例:fr-FR を en-US で記述すると anglais##États-Unis が返る)。
本PRは TypeScript 側のパラメータ順を宣言に合わせ、JSGetLocaleInfo / JSGetNativeDisplayName とその呼び出し元を更新します。リポジトリ内の動作は変わりません。
続きを読む
@pcshrosbree ・ GitHub ・ Servicing-approved community-contribution area-Diagnostics-cdac
release/11.0 に #135519 をバックポートするPRです。cDACの Loader_1.GetModuleHandles は、コレクティブルなアセンブリがアンロードされた際にAppDomainのアセンブリリストへ残る空スロットで例外をスローしていました。本PRはネイティブDACと同様に、このような空スロットをスキップするよう修正します。プロダクトコードの変更はnullチェックのみです。
続きを読む
@MichalStrehovsky ・ GitHub ・ area-NativeAOT-coreclr
NativeAOT における Frozen Object Heap の割り当て実装を簡素化するPRです。プラットフォーム固有の仮想メモリ操作(reserve/commit/mprotect)を廃止し、共有のゼロ初期化済みネイティブ割り当てに置き換えます。作成者によれば、この機能は CoreCLR VM に比べて使用頻度が低いため、実装を単純化できるとのことです。Copilot の概要では、これにより WASM 上でも NativeAOT の frozen object 割り当てが有効になるとされています。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT の WASI 向けランタイムテストのビルドで、共有の WASI SDK を解決できるようにする変更です。AcquireWasiSdk.targets をインポートし、NativeAOT の OS 固有リンカー設定より前に WASI_SDK_PATH を設定します。グループ化されたテストビルドは別々の MSBuild プロセスで実行され、外側のターゲットで計算されたプロパティを継承しないため、この処理は各テストプロジェクトで行われます。あわせて、Unix 用の rpath リンカー引数から WASM を除外します。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
FullOpts のルートメソッドに対して「単一エッジの合成プロファイル(synthetic profile)を信頼する」処理を、メソッドの hotness またはスピード優先の指定がある場合に限定する JIT の変更です。すべての FullOpts ルートでこのプロファイルを信頼すると、短命な動的メソッドへの過剰なインライン化が起こり、LambdaExpression.Compile() が大幅に遅くなっていたため、これを修正します(#127203 の修正)。
以下のいずれかの条件を満たす場合のみ、既存の合成ルートプロファイルのロジックを維持します。
メソッドに [MethodImpl(MethodImplOptions.AggressiveOptimization)] が付いている
JIT_FLAG_SPEED_OPT が設定されている(例: NativeAOT を prefer-speed でコンパイルした場合)
Tier0 または ReadyToRun からの昇格後に JIT_FLAG_TIER1 が設定されている
続きを読む
@springmin ・ GitHub ・ area-Host community-contribution
OpenHarmony(OHOS)向けに singlefilehost(静的 apphost)をビルドできるようにするための CMake 修正です。OHOS 上では NATIVE_LIBS_EMBEDDED と System.Net.Security.Native-Static をスキップし、runtimeinfo のリンクを $<LINK_LIBRARY:WHOLE_ARCHIVE> ジェネレーター式ではなく明示的な whole-archive リンカーフラグで行うよう変更しています。作成者によれば、この式は OpenHarmony NDK ツールチェーンでは使用できないためです。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのimporterにおいて、クラス初期化ヘルパーのCOMMAでラップされたローカル変数ストアを impAppendStmt が認識できず、スタック上の保留中ローカル参照がspillされないため、構造体のタプルスワップで旧値ではなく新値が読み込まれる不具合を修正します。
ブロック先頭(impLastStmt == nullptr)では、impStoreStruct が構造体ストアをクラス初期化ヘルパーのCOMMAの下に沈めます(例:静的構造体フィールドへの starg)。従来の impAppendStmt は、ステートメントのルートがローカルストアである場合のみをローカルストアとして扱っていました。本修正ではCOMMAを辿って格納先のローカルを特定します。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITの importer.cpp において、finallyハンドラのcontinuation(BBJ_CALLFINALLY とペアになる継続ブロック)の重みを修正する処理で発生していたnull参照を修正します。finallyハンドラには callfinally 以外の通常のバックエッジ(ループなど)を持つ先行ブロックが存在し得ますが、これらがフィルタされないままペアのcontinuationにアクセスしていました。そのため、callfinally 以外の先行ブロックを処理前に除外するようにしています。EH-edgeの構築時のフィルタ方法と揃える形です。
続きを読む
@Copilot ・ GitHub ・ area-CodeGen-coreclr
Tier0 において ArgumentNullException.ThrowIfNull(r.Ref) のように CORINFO_HELP_BOX が畳み込まれる際、構造体の読み取りが削除され、null の byref に対して NullReferenceException がスローされなくなる問題の修正です。インポーターで、null の可能性があるソースアドレスに対して GT_NULLCHECK を保持するようにし、paramName の評価より前に null チェックが行われるようにしています。
続きを読む
@jkoritzinsky ・ GitHub ・ area-Host
CoreCLRのbrowser-WASMホストが、PDBをEmscriptenの仮想ファイルシステム(VFS)ではなく、アセンブリと同様にリニアメモリ上に登録するよう変更されました。これによりJavaScriptのファイルシステムサポートへの依存が不要になり、MonoのbrowserWASMにおけるシンボル読み込み方式とも揃います。
スタックトレースでファイル情報が要求された際、CoreCLRは保持されているCodeViewエントリからポータブルPDBのファイル名を遅延的に特定し、既存の外部アセンブリプローブ経由でホストに問い合わせます。取得したPDBは Module::SetInMemorySymbolStream によってモジュール所有のシンボルストリームとしてキャッシュされます(SetSymbolBytes に伴う動的シンボル通知を回避するため)。
続きを読む
@lewing ・ GitHub ・ area-Diagnostics-cdac
wasm向けcDAC(R2Rスタックウォーカー)のアンワインダを、ネイティブの WasmUnwindStackFrameCore / UpdateRegDisplay_Impl の挙動に揃える修正です。主な変更は次の3点です。
非R2Rの呼び出し元 : SPをクリアせず、IPとFPを null にしたうえで呼び出し元のSPを保持するようにしました。従来は、自身のフレーム内にアクティブな InlinedCallFrame を持つR2Rメソッドが、ウォーカーがそのフレームを越えられないため繰り返し報告されていました。
SoftwareExceptionFrame : IP・SPに加えてFPも復元するようにしました。FP(InterpreterFP)はwasmで唯一のcallee-savedレジスタですが、wasmでは CalleeSavedRegisters ディスクリプタが空のため、FPが前フレームの値のまま残っていました。
非アクティブな InlinedCallFrame : ネイティブと同様に、インタプリタフレームのスタッシュへ書き込む前に return するようにしました。
続きを読む
@adamperlin ・ GitHub ・ area-CodeGen-coreclr
WebAssembly (Wasm) 向けJITにおいて、配列要素アクセスのアドレス計算を並べ替え、配列データオフセットをload/storeのメモリオペランドに畳み込めるようにする変更です(#134465 を解決)。既存のcontainment(包含)ロジックの制約(アドレスが TYP_REF または TYP_BYREF であること)の範囲内で動作します。作成者によれば、同様の並べ替えはRISC-Vでは既に行われています。
続きを読む
@sbomer ・ GitHub ・ linkable-framework area-Tools-ILLink
CIのLinux x64 / Windows x64 / macOS arm64 の CoreLib/libraries ジョブで、実験的な ILLink タスクキャッシュを有効化します。Azure Pipelines からジョブ専用のキャッシュを復元し、プラットフォームと構成ごとにスナップショットを分離します。ビルドとポストビルドの完了後、今回のビルドで使われなかったエントリを削除(purge)してから次のスナップショットを保存します。
作成者の報告によると、CIビルド 1642482 でのリンカーキャッシュのヒット数は次のとおりです。
Linux / macOS: 254/255(99.6%)
Windows: 252/255(98.8%)
3プラットフォームすべてで、復元・再利用・purge・スナップショット保存が成功したとのことです。
続きを読む
@sbomer ・ GitHub ・ linkable-framework area-Tools-ILLink
ランタイムのライブラリビルド(共有フレームワーク、out-of-band、ライブラリ単位のトリミング)で実行される ILLink を、実験的な ILLink キャッシュの対象にする変更です。キャッシュは引き続きオプトインです。既存のタスクパラメータを可能な限り再利用し、リンク属性・置換・アセンブリ検索ディレクトリに必要な範囲の追加引数形式のみをサポートします。アセンブリ解決や独自引数の優先順位は変更せずに、これらの入力をフィンガープリント化します。
続きを読む
@adamperlin ・ GitHub ・ area-CodeGen-coreclr
JITのRationalizeフェーズにおいて、PreOrderVisit中のRewrite*Intrinsicで別ノードに置き換えられた場合、その置換後ノードに対して前処理(pre-order processing)が実行されない問題を修正します(#133787 の解決)。
問題となるIRは、外側のShuffleが恒等シャッフルであり、RewriteHwIntrinsicAsUserCallで畳み込まれて消える一方、置換ノードとなる内側のShiftRightLogical128BitLane(引数が非定数のためGT_CALLへの書き戻しが必要)が処理されないケースです。修正により、Rewrite*Intrinsicが異なるノードを返した場合、その新しいノードに対して処理ロジックを再実行します。
続きを読む
@richlander ・ GitHub ・ area-Infrastructure
runtime が所有する x64 Helix のコンテナホスト を Azure Linux 3 から Azure Linux 4 (AzureLinux.4.Amd64[.Open]) に移行するPRです。スタンドアロンの Helix テスト VM は引き続き Azure Linux 3 (AzureLinux.3.Amd64[.Open]) のままです。
Azure Linux 4 はコンテナのホスト専用 で使用します。Azure Linux 4 のパッケージリポジトリに現時点で libmsquic が存在しないため、ベアのテスト VM としては選択していません(Azure Linux 4 用 Helix prerequisite コンテナが、Azure Linux 3 の ms-oss フィードから libmsquic をインストールして対処)。
Azure Linux 3 / 4 の明示的なコンテナテストのカバレッジは維持され、変わるのは基盤となる Helix ホストのみです。
Azure Pipelines のビルドエージェントは、ビルドプールに Azure Linux 4 イメージがないため build.azurelinux.3.amd64[.open] のままです。
コンテナのタグやダイジェストは変更されておらず、MCR イメージの可用性への影響はありません。
続きを読む
@jkoritzinsky ・ GitHub ・ area-ILTools-coreclr
.data tls を使用していた4つのILテストを、C++/CLI(IJW)ベースのテストへ変換するPRです。これらのテストは実際にはC++/CLIのシナリオを検証するものであり、そのシナリオはC++/CLI経由でのみサポートされているため、変換が行われました。ネイティブ側はC++/CLIで実装し、マネージド側のラッパーが UnsafeAccessor / UnsafeAccessorType を使ってネイティブの静的エントリポイントを呼び出します(リフレクションは不使用)。
変換対象:
JIT/Directed/tls/Test-TLS
JIT/Directed/tls/MutualRecurThd-TLS
JIT/Regression/CLR-x86-JIT/V1.2-M01/b03689
JIT/Regression/CLR-x86-EJIT/v1-m10/b07847
ネイティブ側のTLSは、ファイルスコープの __declspec(thread) グローバル変数で実装され、#pragma unmanaged/#pragma managed の配置が使われます。
続きを読む
@tannergooding ・ GitHub ・ area-CodeGen-coreclr
x64 JITの逆アセンブリ表示(emitDispIns とその補助関数)において、実際にエンコードされたバイト列と一致しないオペランドサイズが表示される問題を修正します。表示のみの変更であり、コード生成は変わりません。
movzx のデスティネーションが64bitと表示されていた
GC型のレジスタ自己ゼロ化 xor が64bitと表示されていた
v{extract,insert}{f,i}32x4 のimm8レーンセレクタが表示されなかった
movmskps/movmskpd のデスティネーションが64bit GPRと表示されていた
cvtsi2*/vcvtusi2*/vmovd のGPRオペランド名がベクトルサイズ基準になっていた
縮小変換(narrowing convert)のメモリ形式でデスティネーションが元サイズで表示されていた
ブロードキャスト命令のソースがデスティネーション幅で表示されていた
修正例(同一バイト列でも表示が変わる):
before after
C4E27D78C0 vpbroadcastb ymm0, ymm0 vpbroadcastb ymm0, xmm0
62F2FD4819C0 vbroadcastsd zmm0, zmm0 vbroadcastsd zmm0, xmm0
続きを読む
2026年10月19日 (48 PRs) うち Bot 5 件 この日のページ →
@radekdoulik ・ GitHub ・ area-ReadyToRun
ブラウザ/CoreCLR 向け Wasm ReadyToRun (R2R) のメソッド本体の重複排除(folding)で、メソッド固有のインポートセルを選択する自己リロケーションが正規化され、誤ったメソッドに処理が振り向けられる問題を修正します。WASM_MEMORY_ADDR_REL_LEB は、delegate 構築ヘルパーや仮想呼び出しのインポートセルをイメージ相対でロードする際に使われるため、異なる自己ターゲットを正規化すると不正な折りたたみが起きます。このリロケーションを、すでに保護されている符号付き形式と同様に「同一性を露出するもの(identity-exposing)」として分類するようにしました。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr runtime-async
JITのasync continuation capture(async関数のサスペンドポイントをまたぐローカル変数の退避)において、byrefを含まないbyref-like struct(ref struct)も退避対象から除外するよう修正しています。これらの構造体を退避すると、レイアウトがスタック専用とみなされているためwrite barriersなしでヒープへのストアが生成され、continuationの再利用時にGC corruptionを引き起こす問題(#136000)を修正します。
runtime-asyncの仕様には「Byref-like structs will also not be hoisted across suspension points and will have their default value after a suspension point.」と明記されており、この修正は仕様に沿ったものです。
続きを読む
@Copilot ・ GitHub ・ area-Infrastructure
jitstress_isas_nohwintrinsic 構成下で InsertScalarFromVectorDisasm テストが失敗する問題の修正です。この構成ではintrinsic認識が無効化されるため、テストが期待する insertps のソースレーン畳み込みが行われませんでした。そこで、テスト専用の設定として DOTNET_EnableHWIntrinsic=1 を指定し、厳密な逆アセンブリ検証をそのまま維持します。
続きを読む
@EgorBo ・ GitHub ・ Servicing-approved area-CodeGen-coreclr
release/11.0 向けのバックポート(main の #135575)です。ARM64 で間接参照(indirection)やストアの並べ替え、およびポストインデックス・アドレッシングを行う際に、暗黙のフラグ依存関係が保持されず、アロケーション後に符号付き剰余の結果が誤って計算される問題(Issue #135521)を修正します。例として、非負の奇数値に対する k % 2 が -1 を返すケースがあります。
続きを読む
@EgorBo ・ GitHub ・ Servicing-approved area-CodeGen-coreclr
release/11.0 への #136019(main)のバックポートです。ヘルパーベースの tail call で引数をバッファリングする際、byref-like 構造体(例: Span<T>)を GC 記述子に含めるよう修正します。
修正前は、Span<T> を引数に取るヘルパーベース tail call の最中に GC が基になる配列を移動すると、メモリ破損・誤った結果・ハング・致命的クラッシュが起こり得ました(F# / Windows x64 で報告)。
続きを読む
@EgorBo ・ GitHub ・ Servicing-approved area-CodeGen-coreclr
GenTree::Compare を、複数のノード種別に対してより保守的に比較するよう変更し、head/tail merging が誤って異なるツリーを同一と見なさないようにします。main の #135363 の release/11.0 へのバックポートです。
修正前は、JIT が同一オフセットにある別々のフィールドへのアクセスをマージし、その結果として型チェックを誤って除去することがありました。これにより Microsoft.CodeAnalysis を用いたコンパイル emit 中に、断続的な NullReferenceException が発生していました(顧客報告。.NET 10.0.12 で報告されており、.NET 11 固有の回帰ではありません)。
続きを読む
@EgorBo ・ GitHub ・ Servicing-approved area-CodeGen-coreclr
release/11.0 への #135381 のバックポートです。JIT のコード生成で、レジスタ候補のローカル変数を unspill する際に、そのローカル自身の GC 型を使うよう修正します。あわせて、アンマネージ呼び出しの時点でコールee-saved レジスタが GC-live になっていないことを assert で検証します。
報告されている症状は、アンマネージ関数ポインタを使う COM 相互運用コード (Paint.NET のテストハーネスで確認) で、断続的に致命的な GC クラッシュが発生するというものです。
続きを読む
@lateralusX ・ GitHub ・ Servicing-approved area-Tracing-coreclr
EventPipeのサンプリング(スレッド中断)時に、スレッドがマネージドのGCポーリングヘルパー(PollGC / PollGCWorker)内に入ることがあり、これがキャプチャされたスタックの先頭に現れて実際のワークロードを覆い隠す問題を修正するバックポート(release/11.0向け)です。PollGCWorkerをバインダーから参照可能にしてランタイム起動時にバインドし、EventPipeのスタックウォーカーが、メソッドのロードを行わずに先頭のGCポーリングフレームのみを除外できるようにします。呼び出し元フレーム、サンプル、サンプル分類は保持されます。main側のPR(#135219)を手動で調整したバックポートで、.NET 11向けのThread.CoreCLR.csとフィーチャーガードを使用しています。
続きを読む
@lewing ・ GitHub ・ area-CodeGen-coreclr
JITのループ反転(loop inversion)で fgSplitBlockAtEnd により preheader を分割すると、新しい preheader が BBF_DONT_REMOVE フラグを継承してしまいます。旧 preheader が catch ハンドラのエントリであり、かつループ条件が後に false へ畳み込まれる場合、新ブロックは到達不能になりますが削除できません。
その結果、Wasm では古い bbPreorderNum が原因で fgWasmControlFlow の block order disagrees with preorder num に引っかかります。他のターゲットでは不要な int3/brk が出力されます。
本PRでは新しい preheader から BBF_DONT_REMOVE を明示的にクリアします。旧 preheader が EH エントリのまま残るため、この対応で問題ありません。fgopt.cpp の OSR エントリ処理と同様の方針です。
続きを読む
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify が endfinally/endfault の発生位置を検証する際、最も内側の「ハンドラ」しか確認しておらず、finally/fault ハンドラの内側にネストされた try ブロックや filter 内にある endfinally/endfault を誤って有効と判定していた問題を修正します。ECMA-335 I.12.4.2.8.2.6 では「最も内側を囲む保護ブロック・filter・ハンドラが finally または fault ハンドラであること」と規定されています。
修正前は、以下のような IL が検証エラーなしで通っていました(endfinally の直近を囲むのは try ブロックであり、ハンドラではない)。
.finally
{
.try
{
endfinally // 最も内側を囲むのはこの try
}
catch [System.Runtime]System.Exception
{
pop
leave HandlerEnd
}
HandlerEnd:
endfinally
}
endfault や、ネストした filter 内の命令でも同様でした。
続きを読む
@pcshrosbree ・ GitHub ・ area-System.Net.Security community-contribution
テスト用のループバックOCSP/CRLサーバーである RevocationResponder が、スレッドプールが高負荷の状態でリクエストに応答しなくなる問題の修正です。原因は、ThreadPool.QueueUserWorkItem の preferLocal: true により、リクエストハンドラがワーカースレッドのローカルキューに積まれる点にあります。そのスレッドは直後に HttpListener.GetContext() でブロックするため、他のワーカーがスティールしない限りハンドラが実行されません。グローバルキューが忙しい間は応答が返らず、チェーンエンジンのフェッチがタイムアウトして RevocationStatusUnknown となり、ConnectWithRevocation_WithCallback(checkRevocation: True) が期待する Revoked を得られず失敗していました。
修正は、アクセプトループとリクエストハンドラのキュー投入を preferLocal: false に変更するものです(ThreadPool.QueueUserWorkItem(state => HandleRequest(state), context, false) の形)。テスト専用の変更です。
続きを読む
@wpscott ・ GitHub ・ community-contribution area-NativeAOT-coreclr runtime-async
NativeAOT(ILC)で OptimizationPreference=Size の場合に、Task<ValueTask> / Task<ValueTask<int>> を await すると NullReferenceException が発生する問題の修正です。原因は MethodExtensions.IsAsyncCall がインスタンス化後のシグネチャ で Task/ValueTask の戻り値判定を行っており、AsyncHelpers.TransparentAwait<T> では T = ValueTask 等のときに判定結果が反転していたことです。ランタイム(vm/class.cpp)は AsyncMethodFlags をジェネリックメソッド定義から一度だけ算出するため、インスタンス化に依存しない判定に揃えました。
var tcs = new TaskCompletionSource<ValueTask>();
tcs.SetResult(ValueTask.CompletedTask);
ValueTask inner = await tcs.Task.ConfigureAwait(false);
await inner.ConfigureAwait(false);
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
CoreCLR JITにおいて、Value Number(VN)・アサーション・SSAを活用して、より多くの冗長なnullチェックを除去する変更です(作成者によるとドラフト状態で、EH(例外処理)のPHI入力の扱いは要レビュー)。
作成者が示した例では、holder.Item == null を確認済みのフィールドに対する呼び出しで、x64のコードサイズが37バイトから35バイトに縮小しています。
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.AggressiveOptimization)]
public static int Test_FieldGuardCall(Holder holder, int value) {
if (holder.Item == null) return -1;
return holder.Item.Touch(value);
}
G_M21527_IG03:
- cmp dword ptr [rcx], ecx
call [Box:Touch(int):int:this]
続きを読む
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify.Verifier と IResolver の既存の振る舞い(スレッドセーフ性、検証の実行タイミング、PEReader の寿命、リゾルバが同一の PEReader インスタンスを返すべき理由)を XML ドキュメントコメントとして明文化する PR です。src/coreclr/tools/ILVerification で公開されている残りの API(VerificationResult、ErrorArgument、VerifierOptions、VerifierError、Verifier のコンストラクタ/メソッド)にもドキュメントを追加しています。動作の変更はありません 。
ドキュメント化された主な事実(コード根拠に基づく):
ILVerifyTypeSystemContext は PEReader ごとに EcmaModule を Dictionary にキャッシュし、ロックなしで追加・削除は行わないため、1つの Verifier を複数スレッドで共有するとスレッドセーフではありません。
Verify メソッドはイテレータを返すため、検証とリゾルバ呼び出しは列挙時に実行されます(SetSystemModuleName はシステムモジュールを即時に解決)。
EcmaModule は PEReader と MetadataReader を保持し、ILVerification 側では PEReader を破棄しないため、呼び出し側は PEReader を使用可能な状態に保つ必要があります。
モジュールは PEReader インスタンスをキーにするため、同一アセンブリに別インスタンスを返すリゾルバは、型が別物の複数モジュールを生成します。
続きを読む
@lewing ・ GitHub ・ Servicing-approved arch-wasm area-System.Threading os-browser
シングルスレッドランタイム(browser、WASI)で、SemaphoreSlim.Wait、ManualResetEventSlim.Wait、Monitor.Wait/Condition、Task.Wait などの同期待機が、実際にはブロックしない場合でも PlatformNotSupportedException をスローしていた問題を修正します。本変更により、競合のない(uncontended)待機は成功し、実際にブロックが必要になる場合にのみ例外をスローします。マルチスレッドランタイムの動作は変更されません。
これは .NET 10 からのリグレッション(dotnet/runtime#123329 が原因)で、Roslyn workspaces のように SemaphoreSlim を使うBrowser/WASIアプリやライブラリに影響していました。本PRは main の dotnet/runtime#135413 の release/11.0 へのバックポートです。
続きを読む
@MihaZupan ・ GitHub ・ area-Host
corerun が run() / main の終了後もランタイムの別スレッドから呼ばれ得る host_runtime_contract コールバック(resolve_assembly_to_path / get_runtime_property)で、破棄済みのスタック上の状態を参照して SIGSEGV するクラッシュを修正します。#132861 で TPA が プロパティ文字列から host_runtime_contract のコールバックへ移行された影響で、run() 内のスタックローカルだった contract とそのコンテキスト(assembly パスの unordered_map を保持)が、終了処理中に別スレッドから参照されていました。
修正内容:contract とコンテキストをヒープ確保し、意図的に解放しない(プロセス終了まで必要なため)。
併せて、コンテキストが main の(コピー不可の)configuration を指すのをやめ、get_runtime_property が必要とするフィールドをコピーして保持するようにしています。
本件は hostpolicy に対する #135908 の corerun 版です。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT の WASI アプリケーションで、マネージドのエントリポイントが返す数値の終了コードを保持するようにする変更です。
WASI Preview 2 の libc の通常の起動処理は main を呼び出し、r != 0 を CLI run インターフェイス経由で返します。そのため、テストが 100 を返しても、Wasmtime の exit-with-code オプションを使ってもホストの終了コードは 1 になります(libc の時点で数値が破棄されているため)。
WASI では exit(__managed__Main(...)) を呼び出すことで、libc が数値の exit-with-code インターフェイスを使えるようにします。他プラットフォームのブートストラップ経路は変更されません。なお、Wasmtime 側でこのインターフェイスを有効にするには -S cli-exit-with-code=y が引き続き必要です。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT コンパイラ(WASM ターゲット)で、メソッド本体を重複排除(folding)する際に、WASM の関数型(lowered function type)が一致していることを要求するようにする変更です。命令バイト列が同一でも、未使用パラメータの違いなどにより WASM のシグネチャが異なる場合があります。アドレスが取得されたメソッドの forwarding stub は、パラメータを folding 先のターゲットへ渡すため、ターゲットの関数型が異なるとモジュールが不正になる問題がありました。これを防ぐため、隠し ABI パラメータを含む lowered 関数型の比較を、WASM におけるメソッド本体の等価判定に追加しています。既存の本体/リロケーション比較および非 WASM の挙動は変更されません。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Http
HTTP/2のループバックテストにおいて、同一接続上で複数の書き込みが同時に発行され、SslStream が NotSupportedException: This method may not be called when another write operation is pending. をスローする問題を修正するテスト側の変更です。保留中の ReadFrameAsync が透過的にPING ACKを送信するのと同時に、テストがレスポンスHEADERSを送信する場合があります。また、keepalive用のリーダーがクライアントのEOFを検知して切断用GOAWAYを送信している最中に、最終レスポンスのDATAが書き込まれる場合もあります。プロダクトコードの変更や共有ヘルパー実装の変更はなく、プロトコルのアサーションも変わりません。
続きを読む
@rzikm ・ GitHub ・ area-System.Net
WebSocket_NoPongResponseWithinTimeout_Aborted テストの同期不良を修正するPRです。従来は固定の2.2秒待機で「最初のping送信」と「そのタイムアウトによるハートビート処理」の両方が完了すると仮定していましたが、ThreadPoolのスケジューリング遅延下では、ping期限切れ前またはハートビート配信前に Open が観測され、アサーションが失敗し得ました。修正では、最初のpingを読み取って検証した後、タイムアウト駆動のストリーム破棄による相手側のEOFを待ってから Aborted を検証するようにしています。いずれの待機も既存の全体キャンセルトークンで制限されます。製品コードの変更はなく、テストのみの修正です。
続きを読む
@pcshrosbree ・ GitHub ・ community-contribution area-CodeGen-Interpreter-coreclr
インタープリターで catch ブロックを抜けた後、保留中のスレッド中断(thread abort)を再開ポイントで再度発生させるよう修正するPRです。コンパイル済みコードの EECodeManager::ResumeAfterCatch と同様の挙動を InterpExecMethod に持たせています。あわせて、catch の leave island への遷移を INTOP_LEAVE_CATCH に統一しました。これにより、再開ポイントが catch の try 領域を囲むすべての try 領域の内側に入り、#135871 で外側の catch が abort を取りこぼす問題が解消されます。
続きを読む
@pcshrosbree ・ GitHub ・ area-ILTools-coreclr community-contribution
マネージド版 ilasm が、Portable PDB 仕様上無効な LocalScope / LocalVariable 行を黙って捨てていた挙動(#135311)を改め、行は宣言どおり出力したうえで、ソース上の該当箇所にエラーとして報告するようにする変更です。--error 指定時はエラーがあっても行を宣言どおりに書き出し、「Output file contains errors」を表示します。--error なしでは ***** FAILURE ***** を出力し、何も書き出しません。
追加された診断:
ILA0058: 命令のないスコープ(最初の名前付きローカルの位置で報告)
ILA0059: スコープ内で既に宣言済みのローカル名
ILA0060: スコープ内で他の名前付きローカルが使用済みのスロット
PDB が要求された場合のみスコープを記録するため、PDB なしのビルドには影響しません。
続きを読む
@pcshrosbree ・ GitHub ・ area-Diagnostics-coreclr community-contribution
CordbReJitILCode::GetInstrumentedILMap(src/coreclr/debug/di/module.cpp)で、自身のパラメータではなく、直前の GetEHClauses のパラメータである pcClauses を検証していた誤りを修正します。pcClauses を GetInstrumentedILMap 自身の out パラメータ pcMap に置き換えています。
従来コードがコンパイルできていたのは、VALIDATE_POINTER_TO_OBJECT_OR_NULL マクロが何も展開されないためです(src/coreclr/debug/inc/common.h)。このため引数は破棄されており、挙動は変わりません。作成者は linux-x64 Release で libmscordbi.so を変更の前後でビルドし、2つのファイルがバイト単位で同一であることを確認しています。
続きを読む
@pcshrosbree ・ GitHub ・ arch-wasm area-VM-coreclr community-contribution
wasm上のReadyToRunフレームのcontrol PCは戻りアドレスではなく仮想IP(fgWasmVirtualIP)であるため、スレッドアボートのスタックウォーク(TAStackCrawlCallBackWorker)で行っている「非アクティブフレームのオフセットを1戻す」補正が誤動作していました。これにより、ハンドラ(finally/catch)の最初のリージョンでの呼び出しがハンドラ外と判定され、そのハンドラ内で再度アボートが発生していました。本PRでは仮想IPに対してこの補正をスキップするよう修正します(SfiInit/SfiNextでは既にスキップ済み)。
結果として、デフォルトのReadyToRun CoreLibで ControlledExecution.Run が OperationCanceledException ではなく ThreadAbortException をスローする問題が解消されます。
続きを読む
@lewing ・ GitHub ・ area-ReadyToRun
crossgen2が、CoreLibのプリミティブ型(char、int など)を型引数とする where T : struct / where T : unmanaged 制約付きジェネリックを、CoreLibのバージョンバブル外のコードからインスタンス化した場合に、プリコンパイルもインライン化もしなかった問題の修正です。
原因は ComputeInstantiationVersionsWithCode が、型制約が1つでもあるとプリミティブ型引数をバージョンバブルの一部と見なさなかった点です。C#は struct / unmanaged 制約を System.ValueType の型制約としてメタデータに出力するため、制約リストが空でなくなり、VersionsWithMethodBody が false を返していました。その結果、定義モジュールへのコンパイルがされず、CanInline も false となり、JITが「cannot get method info」と報告していました。
修正では、型引数がプリミティブの場合に System.ValueType 制約を無視します。インターフェイスやクラスなど他の制約は従来どおり不適格のままです。ランタイム側の変更は不要です。
続きを読む
@ManickaP ・ GitHub ・ area-System.Net.Quic
QUICのテストが不安定になる原因として、接続のクローズ処理がストリームデータの受信より先に処理されるタイミング問題が疑われています。これを受け、テスト内でバッファサイズ分のペイロードを送る処理を取り除き、この競合が起きる確率を下げる変更です。ライブラリ本体の実装変更ではなく、テストコードのみの修正です。
@agocke ・ GitHub ・ area-Infrastructure
Azure Pipelinesがキャッシュスナップショットを保存する前に、Roslynのコンパイルキャッシュを削除(プルーニング)するCI変更です。VBCSCompiler -purgecache:<job-start-time> を使い、そのジョブで使われなかったエントリを破棄し、再利用されたエントリと新規作成されたエントリは保持します。
背景として、Linux Debugのキャッシュ保存がアーカイブ作成時の No space left on device で失敗しており、新しいスナップショットを公開できていませんでした。サンプルのLinux Releaseキャッシュでは、未使用エントリが11,430件、再利用エントリが288件、新規保存エントリが881件でした(バイト数ではなくエントリ数)。
続きを読む
@davidwrighton ・ GitHub ・ area-ReadyToRun
crossgen2 の ReadyToRun コンパイルで、CorElementType により直接エンコードされる組み込み型(string、object、TypedReference など)の具象 TYPE_HANDLE インポートを、メソッドごとのフィクスアップではなく モジュール eager インポートセクション に配置するよう変更します。同ルールはこれらの型の配列(多次元配列・ネスト配列を含む)にも適用されます。enum、その他トークン依存の型、ポインター、byref は従来の扱いのままです。
最終的な依存関係トラバーサルで到達したインポートのみが出力され、定義済みの型一覧をルート化するものではありません。
eager セルはモジュールロード時に解決され、メソッドごとのフィクスアップリストには現れなくなります。
Wasm 専用ではなく、crossgen2 共通のインポート選択ロジックの変更です。
元の変更(#135553)から独立部分を main に切り出したもので、二段階コンパイル、直接呼び出し、prolog/フレーム ID の変更は含みません。
続きを読む
@davidwrighton ・ GitHub ・ area-ReadyToRun
Wasm32 では System.Numerics.Vector<T> の幅が 128 ビットに固定されているため、そのレイアウトを固定として扱うように変更します。これにより、このターゲットでは実行時依存のベクターレイアウトチェック(ReadyToRun のフィックスアップ)が不要になります。含有型も、残りのレイアウトが version bubble 内で固定されていれば固定レイアウトになり得ます。他のターゲットでは従来どおり実行時依存のチェックを維持し、含有型に対する通常の version bubble 制限も維持されます。
続きを読む
@davidwrighton ・ GitHub ・ area-ReadyToRun
Wasm向けReadyToRunコンパイルで、静的ベースヘルパーを選択する前に、既存の静的フィールドintrinsicを認識するよう修正します。IntPtr.Zero、UIntPtr.Zero、BitConverter.IsLittleEndian の読み取りは定数として、String.Empty は文字列ハンドルとして扱えるようになります。アドレス取得、書き込み、通常の静的フィールドアクセスは従来の処理を維持します(mainの IsThreadStaticForTarget(field) によるスレッド静的判定も保持)。これは dotnet/runtime#135553 から独立した修正だけを切り出したもので、two-phase compilation、direct call、prolog/frame-identity の変更は含みません。
続きを読む
@janvorli ・ GitHub ・ area-GC-coreclr
バックグラウンドGC(BGC)中に割り当てられた4 GiBを超える配列が、ゼロ初期化されない問題を修正するPRです。
UOH(LOH/POH)の割り当てがBGCと重なる場合、make_unused_array が割り当て領域を一時的にフリーオブジェクトとして表現します。4 GiBを超える割り当てでは複数のピースが必要になることがあります。新規メモリ上でヘッダーだけをクリアすると、後続ピースに PREV_EMPTY フリーリストマーカーが残り、ゼロ初期化の保証が破られていました。
修正では、UnsetFree にオブジェクトサイズを渡し、ピースがフリーリストの前方ポインタを格納できる大きさであれば、そのポインタもクリアします。clear_unused_array はすでにすべての一時ピースを走査しているため、割り当てが返される前に各ピースのメタデータがクリアされます。
続きを読む
@AaronRobinsonMSFT ・ GitHub ・ area-VM-coreclr
CoreCLR内部のGUID生成ヘルパーについて、出力ポインタ経由で結果を書き込む方式をやめ、GUIDを値渡し(戻り値)で返すように変更するリファクタリングです。あわせて、呼び出し元を更新し、GuidFromName を static にしています。GUID生成の挙動そのものは維持される旨がCopilotの概要に記載されています(ビルド・テストは未実施とのことです)。
@MichalStrehovsky ・ GitHub ・ arch-wasm area-CodeGen-coreclr
NativeAOT/WASI向けに、CoreCLRのイメージベース相対アドレッシングではなく、リンカーが再配置する絶対アドレスを使用するよう変更します。「Console.WriteLine の hello world を WASI/NativeAOT でコンパイル・リンク・実行する」ための一連のPRの一部です。
主な内容:
絶対アドレス(符号付き)定数とJITデータアドレスを、イメージベースのグローバル加算なしで出力
スカラーのグローバル load/store を、アドレスオペランドをゼロとした絶対memarg再配置に畳み込み
関数ポインタの実体化を維持するため、関数を対象とする WASM_MEMORY_ADDR_SLEB 再配置をテーブルインデックス再配置にマッピング
emitImageBase() はR2R専用のままで、CoreCLRのイメージ相対パスは変更されません。WASI SDK clangの非PICグローバルアクセスモデルに合わせた設計です。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Security
MsQuicのバージョンを2.5.12に更新するPull Requestです。あわせて System.Net.Security の TlsSession に変更が入り、TlsSessionTests.cs に107行のテストが追加されています。
提供された情報には、MsQuic更新の目的や TlsSession.cs の変更の詳細は含まれていないため、それらについての記述は控えます。
続きを読む
@rzikm ・ GitHub ・ area-System.Formats.Tar
System.Formats.Tar のアーカイブ展開時に行うシンボリックリンクの検証を改善するPRです。親ディレクトリ参照(..)を含むシンボリックリンクの追跡を、アーカイブ内で実際にそのようなシンボリックリンクに遭遇した場合のみに限定し、オーバーヘッドを削減します。あわせて、既存のシンボリックリンクを辿らなくなっていたリグレッションを修正します。
@rcj1 ・ GitHub ・ area-Diagnostics-coreclr
TryGetSymbol が、ホストのアーキテクチャ・OSに依存せず、すべてのアーキテクチャ/OS向けのモジュールに対して動作するようにするための変更です。作成者の説明によれば、これがこのPRの目的です。
主な変更は dbgutil 配下に集中しており、ELF/Mach-O のシンボル解決処理(elfreader、machoreader)の見直しと、新規ファイル symbol.cpp の追加が含まれます。
続きを読む
@caraioniurie47 ・ GitHub ・ area-System.Net.Security community-contribution
Linux上でサーバー側の TlsSocketSession がソケットから ClientHello を読み取れなかった場合(クライアントが完全なTLSレコード到着前に切断/リセットした場合、またはレコードヘッダが読み取りバッファより大きいサイズを示した場合)に出る例外メッセージを修正します。
従来は SR.Format を通さず IOException(SR.net_ssl_read_bio_failed_error) を投げていたため、メッセージが SSL Read BIO failed with OpenSSL error - {0}. とプレースホルダーのまま表示されていました。また、CryptoNative_BioPeekTlsFrame は入口でOpenSSLのエラーキューをクリアし、-1 を返す経路でもエラーをプッシュしないため、フォーマットしても名前を示せるOpenSSLエラーが存在しません。そのためプレースホルダーを持たない新しいリソース文字列 net_ssl_read_client_hello_failed("The TLS ClientHello could not be read from the socket.")を使い、同じ IOException を投げるように変更しました。
続きを読む
@rzikm ・ GitHub ・ area-System.Formats.Tar
GNU sparse 1.0 形式のPAXエントリで、埋め込まれたスパースマップが約1 KiBを超えると、有効なデータにもかかわらず InvalidDataException がスローされる問題の修正です。リフィル(再読み込み)時の容量チェックが、次回のコンパクション時に破棄される「消費済みバイト」まで含めて計算していたことが原因です。修正後は未読バイトのみで容量を計算します。固定1 KiBバッファ、1,000,000セグメントの割り当て上限、数値行の境界チェック、レコード境界に揃ったパックデータの位置決めは維持されます。
続きを読む
@pcshrosbree ・ GitHub ・ area-Diagnostics-coreclr community-contribution
プロファイラAPIの ProfileLeave における Leave2 スローパスで、COR_PRF_FUNCTION_ARGUMENT_RANGE argumentRange が未初期化のまま ProfilingGetFunctionLeave3Info に渡され、そのポインタがプロファイラの FunctionLeave2 フックに渡されていました。この変更でゼロ初期化し、フックには空のレンジが渡されるようにします。
問題の経緯(PR記述より):
スローパスは COR_PRF_ENABLE_FRAME_INFO、COR_PRF_ENABLE_STACK_SNAPSHOT、COR_PRF_ENABLE_FUNCTION_RETVAL のいずれかで有効になる
しかしクエリがレンジを書き込むのは COR_PRF_ENABLE_FUNCTION_RETVAL が設定されている場合のみ
イテレータの割り当てに失敗した場合は、何も書き込まずに E_UNEXPECTED を返す
これらのケースでは、フックにスタック上の不定値が渡されていた
続きを読む
@lateralusX ・ GitHub ・ area-VM-coreclr
EventPipeのスタックウォークにおいて、スタック先頭に現れるGCポーリング用フレーム(PollGC / PollGCWorker)を除外する変更です。非インライン化された PollGCWorker ヘルパーをバインダから参照可能にし、マネージドコード実行前にバインドしておくことで、サスペンド中にメソッドをロードすることなくスタックウォーク側がポーリングヘルパーを認識できるようにします。除外対象は先頭の PollGC と PollGCWorker フレームのみで、呼び出し元フレーム、サンプル、分類は維持されます。
続きを読む
@shatanov ・ GitHub ・ area-System.Net.Sockets os-tvos community-contribution
iOS/tvOSでUnixDomainSocketEndPointがPlatformNotSupportedExceptionをスローしていた問題を修正し、Unixドメインソケットを有効化します。SocketProtocolSupportPalがiOS/tvOSでAF_UNIXを無条件に未サポートとして扱っていた除外を削除し、既存のネイティブプローブを使用するようにしました。WASIの明示的な除外は維持されます。
続きを読む
@pcshrosbree ・ GitHub ・ area-Diagnostics-coreclr community-contribution
CordbModule::RefreshMetaData(デバッガ側 DBI)が、ランタイムからの DB_IPCE_RESOLVE_UPDATE_METADATA_1 応答に含まれる失敗 hr を無視していた問題の修正です。メタデータのシリアライズに失敗してもバッファ無しのまま処理が続行され、ランタイムの本来のエラーが E_INVALIDARG やアドレス0の読み取り失敗といった二次的な失敗に隠れていました。本PRでは、応答のバッファ関連フィールドを使用する前に応答の hr を確認し、失敗時はそのエラーを返すようにします。
続きを読む
@prozolic ・ GitHub ・ area-System.Collections community-contribution
System.Collections.Immutable 内部の ImmutableExtensions.TryCopyTo において、型チェックを IList<T> から ICollection<T> に変更しました。これにより、IList<T> を実装せず ICollection<T> のみを実装するコレクション(例: Dictionary<K,V>.Keys / Values)でも ICollection<T>.CopyTo が呼び出されるようになり、要素ごとの列挙によるフォールバックを避けられます。
続きを読む
2026年10月18日 (10 PRs) うち Bot 1 件 この日のページ →
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify (ILVerification.Tests) に、例外処理関連の VerifierError コード5件のテストを追加するPRです。main 時点で、どの _Invalid_ / _InvalidType_ テスト名にも含まれていない42件のエラーコードを埋める小規模バッチの第1弾です。本番コードの変更はなく、テストILのみの追加です。
@EgorBo ・ GitHub ・ area-VM-coreclr
ヘルパーベースの末尾呼び出し(tail call)で、Span<T> のような byref-like 構造体の引数が GC に報告されない問題を修正します。
TailCallHelp::GenerateGCDescriptor は GC シリーズを持たない値型をスキップしていましたが、Span<T> などの byref-like 構造体は GC シリーズを持たないものの内部ポインタ(interior pointer)を含みます。そのため、tail call の引数バッファに格納されている間は GC に報告されず、IL_STUB_StoreTailCallArgs と IL_STUB_CallTailCallTarget の間で GC が発生すると、呼び出し先が配列の旧位置を指す古いポインタを受け取る可能性がありました。
修正では、GC ディスクリプタ構築時に byref-like 構造体を GC ポインタを持つ構造体と同様に扱います。getClassGClayoutStatic はすでに byref フィールドを TYPE_GC_BYREF として報告するため、それを利用できます。
続きを読む
@pcshrosbree ・ GitHub ・ area-ReadyToRun community-contribution
src/coreclr/tools 配下の7ファイルにある、XMLドキュメントコメント9箇所の不正なXMLや無効な参照を修正するクリーンアップPRです(コメントのみの変更で、コード変更はありません)。これらのプロジェクトは GenerateDocumentationFile を有効にしていないため現在は無視されますが、有効化すると警告となり、警告をエラー扱いにしている場合はビルドが失敗します。作成者はドラフトの任意クリーンアップとしており、不要であればクローズしてよいとしています。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-VM-coreclr os-browser
browser-wasm 向け CoreCLR で、memmove の QCall を emscripten libc (musl) の memmove 直結から、__builtin_memmove を呼ぶ小さなラッパーに切り替える変更です。
従来の emscripten libc (6.0.2) の memmove は、非オーバーラップ時は memcpy(n >= 512 で memory.copy)に転送しますが、オーバーラップ時は -mbulk-memory の有無にかかわらず常にスカラーループで処理していました。
SpanHelpers.Memmove はオーバーラップするバッファを memmove QCall に渡すため、CoreCLR wasm 上の Span<T>.CopyTo / Array.Copy のオーバーラップ時が Mono インタープリター(jiterpreter が memory.copy を出力)より大幅に遅くなっていました(Mono interpreter と CoreCLR composite R2R の比較で Span<Char>.CopyToOverlap(Size: 3000) が約20倍、Span<Byte>.CopyToOverlap(Size: 3000) が約13.6倍遅い)。
__builtin_memmove は -mbulk-memory 有効時に memory.copy へ lowering されます。
ブラウザ専用の変更で、wasi-sdk 34.0 は memmove に既に memory.copy のパスがあるため影響を受けません。
続きを読む
@lagudafuadtosin ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerifyにおいて、initonly な静的フィールドに対する ldsflda を、静的コンストラクタ(cctor)外でも許可するよう変更するPRです。インスタンスフィールドの ldflda と同様に InitOnly チェックを外し、ストア命令(stsfld 等)のチェックは従来どおり維持されます。
@pcshrosbree ・ GitHub ・ area-ILTools-coreclr community-contribution
managed ilasm(src/tools/ilasm)のコメントから、ネイティブ ilasm への言及を取り除く変更です。#135932 のレビューで @jkotas が「コメントはネイティブ ilasm を参照せず、それ単体で理解できるようにすべき(互換性のために残している不自然な挙動を除く)」と指摘したことを受け、#135311、#135297、#135289 で追加したコメントに適用しています。
ネイティブ ilasm との比較で説明していたコメントは、コードが従うルールそのものを記述する形に書き換え、単なる補足(「As in native ilasm, ...」など)だった記述は削除しています。互換性維持のための挙動を説明していたコメントは対象に含まれていません。
続きを読む
@agocke ・ GitHub ・ area-System.Net.Http
HTTP/1.1のチャンク形式リクエストおよびHTTP/2のDATAフレームのボディ受信バッファを、チャンク/フレームごとに正確なサイズで再確保する方式から、容量を幾何級数的に拡大する方式へ変更しています。従来は固定サイズの断片を受信するたびに蓄積済みボディ全体をコピーしていたため、2次関数的なコピーコストが発生していました。この変更により、ループバックサーバーで大きなペイロードを扱う一部のテストが、作成者の環境で「数分から数秒」に短縮されたとのことです。
続きを読む
@andrew-kulikov ・ GitHub ・ community-contribution area-NativeAOT-coreclr
NativeAOT (ILCompiler) のメソッド本体フォールディング(重複排除)において、MethodInternKey のハッシュにリロケーション(再配置情報)を含めるよう変更しました。従来はコードバイト・GC情報・フレーム情報・EHバイトのみをハッシュしていたため、リロケーション先だけが異なるメソッド本体が同一ハッシュ値となり、同じ HashSet バケットに集中して AreSame の比較が O(n²) になっていました。特に最適化済みコードでは、async メソッドごとに生成されるステートマシン構造体のため、AsyncStateMachineBox<TResult, TSM>.MoveNext や AsyncMethodBuilderCore.Start<TSM> などがバイト列同一のコピーとして大量に発生し、この問題が顕著になります。
続きを読む
@bartonjs ・ GitHub ・ area-System.Security
生成されるASN.1型における BigInteger のサポートを削除するPull Requestです。DssParms を除けば、基本的に Int32 または ReadOnlyMemory が必要とされるため、BigInteger を必要とする箇所(DSAキー処理)のみで変換を行い、ジェネレーター側のコードを削減しています。
2026年10月17日 (8 PRs) この日のページ →
@lewing ・ GitHub ・ arch-wasm area-System.Numerics
WASI ReadyToRun向けに無効化されていた BFloat16Tests.ExplicitConversion_FromInt128 と ExplicitConversion_FromUInt128 のテストを再有効化します。#134813で追加された ActiveIssue 属性を削除する変更です。
原因はBFloat16の変換バグではなく、Int128/UInt128 を含むauto layout構造体のアラインメント不一致でした。ランタイムは8バイト、crossgen2は16バイトでアラインしていたため、R2Rコードとランタイムでレイアウトが食い違い、Int128 の入力値が破損していました(例: (0, BFloat16.Zero) の行が i: 336347874021343232, expected: 0 となる)。この問題は #135481([wasm] Keep larger field alignment for Align8 auto-layout structs)で修正済みです。
続きを読む
@MihaZupan ・ GitHub ・ area-System.Net.Http
Android上のHTTP証明書検証テストの失敗(dotnet/runtime#123572、#135618以降に報告)と、新しいOpenSSLバージョンでの残存失敗を修正するテスト専用の変更です。プロダクションコードの変更はありません。
主な原因と対応は次のとおりです。
Androidのトラストアンカー : Androidはトラストアンカーの有効期限を検査しないため、期限切れの自己署名サーバー証明書を信頼すると検証が成功してしまい、サーバーが応答せずに閉じてクライアントの再試行と100秒タイムアウトが発生していました。期限切れ/ホスト名不一致のリーフ証明書は、別の有効なCAから発行する方式に変更されました。
Androidのチェーン構築 : 空のカスタムトラストストアは未サポートのため、自己署名で未信頼のケースでは空でない無関係なトラストストアを使用します。期限切れ/未信頼の証明書を経由するパスをAndroidが構築できない場合は PartialChain を期待します。
OpenSSLのBasic Constraints : 自己署名サーバー証明書が KeyCertSign なしのCAとしてマークされていたため、厳格なOpenSSLでは期待値の UntrustedRoot ではなく UntrustedRoot | InvalidBasicConstraints が報告されていました。サーバー証明書は常にエンドエンティティとなり、CA用ヘルパーはCA制約と署名用途を保持します。
失敗の決定性 : 証明書検証が想定外に成功した場合にも応答を返すため、アイドル状態のリスナーに対するタイムアウトではなく、アサーションが直接失敗します。
ポリシーエラーの厳密なアサーションは維持されています。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOTテストレイアウト(Core_Root)生成が、意図せずCoreCLRランタイムのファイルに依存していた問題を修正します。これまでNativeAOT WASIのテストビルドでは、NativeAOT SDKとコンパイラが利用可能でも、Core_Root生成時に「The 'coreclr' subset must be built before building this project」というエラーで失敗していました。
原因は、デスクトップ向けNativeAOTビルドでは sharedFramework にターゲットJITが配置されるため、このチェックを偶然満たしていた点です。WASMのクロスJITは別の場所にあるため、この条件を満たせませんでした。
続きを読む
@ManickaP ・ GitHub ・ area-System.Net.Quic
System.Net.Quic の機能テストを JitStress 環境で無効化する変更です。JitStress では、オブジェクトのルート解除・解放を確認するテストにおいて、20回のイテレーションでは GC によるクリーンアップが間に合わないことがあり、不安定になっていました(dotnet/runtime#134828 の修正)。
作成者によると、ActiveIssue を付けて Issue を開いたままにする案もありましたが、他のシナリオではテストが成功しオブジェクトが正しく解放されることが確認できているため、テスト無効化により Issue をクローズする方針を選んだとのことです。
続きを読む
@Copilot ・ GitHub ・ area-System.IO
Unixにおける名前付きMutex(共有メモリ)のディレクトリ検証を緩和し、named-mutexのスコープ変更後もテストの期待値が旧仕様(グローバルスコープ)のまま残っていた不整合を修正するPRです。既存の共有メモリ用ディレクトリのうち、実際には利用可能なものが所有者・権限チェックで拒否されてしまう問題に対応しています。内部実装(System.Private.CoreLibのUnix共有メモリ管理)とテストの変更で、公開APIの変更はありません。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-Infrastructure-libraries os-browser
Browser CoreCLR のライブラリテストで PublishReadyToRunComposite=true を指定すると、起動時に Assembly not found: 'System.Memory.Tests.r2r.wasm' で失敗する問題の修正です。
原因は、ライブラリテストが入れ子の publish 内で crossgen を実行する一方、実際には build 出力(bin/)を配信している点にあります。build 時の webcil ステージングは obj/R2R を読むためコンポーネントスタブは配置されます。しかし、コンポジットのオーナー(<entry>.r2r.wasm)はアセンブリではなく、WebAssembly SDK では ProcessPublishFilesForWasm 内で publish 用の静的 Web アセットとしてのみ定義されます。この処理がここでは実行されないため、オーナーが wwwroot/_framework にコピーされず、build 用のブート設定にも列挙されていませんでした。
修正は、入れ子の publish がコンポジットイメージを出力として返し、外側の build が静的 Web アセットとして定義する方式です(WasmNativeAsset や WasmAssembliesFinal が外側へ戻る流れと同様)。
続きを読む
@jkoritzinsky ・ GitHub ・ area-VM-coreclr
明示的レイアウト(StructLayout(LayoutKind.Explicit))の byref-like 値型(ref struct)をGCがスキャンする際、フィールドが重なっていると同じ byref スロットが複数回報告され、コンパクションGCが既に再配置済みの内部ポインタを再度再配置してしまう問題の修正です。各物理 byref スロットを一度だけ報告するようにします。デバッガー固有の問題ではなく、通常の値渡しの ref struct 引数でも Windows x86 + DOTNET_GCStress=1 で破損が再現するとされています(#133659 のレビューで依頼されたスタンドアロンの GC 修正)。
続きを読む
@MihaZupan ・ GitHub ・ area-Meta
IndexOf(...) == -1(および < 0 など)形式の判定を Contains(...) 呼び出しへ置き換えるリファクタリングです。既存の同種変更の続きとして、ライブラリ全体の該当箇所を追加で変換しています。提供された情報からは、公開APIの変更や動作変更の記載は確認できません。
// 変更イメージ(一般的なパターン)
// 変更前
if (span.IndexOf(value) == -1) { ... }
// 変更後
if (!span.Contains(value)) { ... }
続きを読む
2026年10月16日 (33 PRs) この日のページ →
@jtschuster ・ GitHub ・ area-ReadyToRun
HalfEstimateR2R.GetDisassembly が参照する R2RDump のパスを、小文字の r2rdump/r2rdump.dll から R2RDump/R2RDump.dll に修正するテスト専用の1行変更です。Core_Root のレイアウトおよび既存の Unix 向け Crossgen2 テストハーネスと表記を一致させています。小文字のパスは大文字小文字を区別しない Windows ファイルシステムでは動作しますが、Linux では ReadyToRun の逆アセンブリを検査する前に失敗します(Linux x64 Checked で The application to execute does not exist: '.../r2rdump/r2rdump.dll' が報告されていました)。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT の WASM ターゲットで、sealed vtable に「タグ付きの shared な IDynamicInterfaceCastable メソッドポインタ」を出力しないようにする修正です。
instantiating thunk のフラグは関数ポインタ relocation の addend として符号化されています。WASM の関数ポインタはテーブルインデックスであり、オブジェクトライタは 0 以外の関数 addend を funclet の序数として解釈します。その結果、存在しない funclet への参照となり、コンパイルがクラッシュしていました。
WASM では shared な dynamic-interface 実装のエントリを null にし、未サポートであることを示す TODO を残しています。これはコンパイル時の bringup 用の修正であり、shared な dynamic-interface ディスパッチのランタイムサポートではありません。サポートにはジェネリックコンテキストを渡す、シグネチャ的に正しい方法が必要で、ポインタのエンコーディング変更だけでは不十分とされています。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT の WASM 向けに、固定シグネチャの RhpDispatchResolve エクスポートを提供する変更です。ジェネリック仮想メソッド(GVM)のヘルパーパスはこのリゾルバーを参照しますが、WASM には対応するネイティブアセンブリ実装がありませんでした。そこで WASM 専用のマネージド実装をエクスポートし、既存の RhpResolveInterfaceMethod のキャッシュ/ワーカーパスへ委譲します。
レシーバーが null の場合は明示的に例外をスローし、ディスパッチヘルパーの従来の挙動を維持します。下位のリゾルバーは他のコンテキストでは意図的に null に対して 0 を返すため、この挙動はそちらでは提供できないとされています。
このヘルパーはターゲットポインターを解決して返すだけで、任意シグネチャの転送トランポリンではありません。新しい呼び出し規約は導入されていません。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT WASM(WASI/browser)で現状サポートされていない4つのテスト構成を、CLRTestTargetUnsupported でマークして除外するPRです。除外条件は TargetsWasm に基づいており、デスクトップ向けのテストカバレッジには影響しません。
除外の理由(PR説明より):
AggregateLibrary、CustomMainWithStubExe、SharedLibrary: 共有ライブラリのサポートが必要だが、NativeAOT WASMは現状これを提供していない
CustomMain: ネイティブアーカイブが必要だが、既存のWASMネイティブテスト用CMakeトラバーサルでビルドされない
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOTのSystem.Numerics.Vector<T>に、WASMのv128 ABIが要求する16バイトアラインメントを与える修正です。
メタデータ上のレイアウトはulongフィールド2つで構成されるためアラインメントが8になります。NativeAOTはターゲットに合わせてベクターのサイズは調整していましたが、アラインメントはメタデータ由来の値のままでした。その結果、共有されているWASM ABIのロワリング処理で「16バイトのベクターは16バイトアラインでなければならない」というアサーションが失敗していました。
本PRではWASMの場合に限りフィールドのアラインメントを上書きします。ABIのアサーションは維持され、他のアーキテクチャのレイアウトには影響しません。これは、crossgen2/VM側で先に行われた補正(dotnet/runtime#131328)がNativeAOT独自のレイアウトアルゴリズムには反映されていなかったことへの対応です。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
Checked JITが、オープンジェネリックメソッド(例: ジェネリックメソッド定義の ldtoken)のdisasmコメントを出力する際にassertで失敗する問題の修正です。このメソッドのシグネチャには CORINFO_TYPE_UNDEF 型が含まれるため、assertが発生していました。この問題により、FSharp.Core.dll に対する jit-diff --pmi が失敗していました。
eePrintMethod と eeGetMethodFullName が CORINFO_TYPE_UNDEF を許容し、<UNDEF> として出力するようになりました。
続きを読む
@austinaviv ・ GitHub ・ area-System.IO.Compression community-contribution
ZstandardStream のコンストラクタにおける引数検証の不備と、失敗時に ArrayPool から借りた内部バッファが返却されない(リークする)問題を修正するPRです。
ZstandardCompressionOptions に null を渡した場合に ArgumentNullException を送出するようにしました。
不正な CompressionLevel 列挙値は、バッファを借りる前に ArgumentOutOfRangeException を送出するようにしました。
ネイティブのエンコーダー/デコーダーのコンテキスト確保・設定が失敗した場合に、内部バッファ(_buffer)を破棄するようにしました。
続きを読む
@ViveliDuCh ・ GitHub ・ NO-SQUASH Servicing-approved area-System.Net.Quic
release/8.0-staging を release/8.0 にマージし、MSRC の internal-to-public ビルドが失敗している問題を解消するための手動マージ PR です。現在の release/8.0 に対する internal-to-public マージでは、複数の Windows ビルドレッグで同じ警告(エラー扱い)が発生して失敗しています。
原因: System.Net.Quic が依存する Microsoft.Native.Quic.MsQuic.Schannel (>= 2.5.11-ci.159417053) が見つからず、NU1603(Warning As Error)となる
2.5.11-ci.159417053 は MSRC の調整済みサービシング作業で内部的に使われるプライベート MsQuic パッケージであり、パブリックビルドでは意図的に利用できない
対応する公開サービシングパッケージ 2.5.12 が利用可能になったため、#135883 で release/8.0-staging を同バージョンに更新済み。本 PR はその変更を release/8.0 に反映する
続きを読む
@lagudafuadtosin ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify が byref-like 型(ref struct)の boxing を検出できていなかった問題(#132954)を修正する PR です。ref struct の boxing は検証エラーとなり、ランタイムが許容する box シーケンスのみ例外として扱われます。また ref struct の配列作成も検証エラーとなります。
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerification.Tests は ILTests\*.ilproj を使ってILテストケースをアセンブルしますが、ILTests/SwitchTests.il だけ対応する .ilproj が存在せず、10個のswitchテストメソッドがアセンブルも実行もされていませんでした。本PRは欠落していた SwitchTests.ilproj を追加し、これらのテストが実行されるようにします。テスト基盤のみの変更で、ランタイム/ライブラリの実装や公開APIへの影響はありません。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOTのスレッド起動処理を、マルチスレッドサポートの有無で分割するPRです。CoreCLRのmultithreading/single-threadingのpartialパターンに倣い、マルチスレッドが無効な場合はスレッド生成用ヘルパーとブートストラップのスレッドエントリスロットを除外し、シングルスレッド用のThreadプリミティブを提供します。
@elinor-fung ・ GitHub ・ area-Host
hostpolicy コンテキストの寿命を変更するPRです。ホスト・ランタイム間のコントラクトで提供されるコールバックや値はプロセスの生存期間中ずっと有効であるべきため、CoreCLR のロード後は、hostpolicy コンテキストをプロセス終了まで保持するようになります。CoreCLR のロード前に解放されるコンテキストは、従来どおり削除されます。
@ViveliDuCh ・ GitHub ・ NO-SQUASH Servicing-approved area-System.Net.Quic
release/9.0 への internal-to-public マージが、Windows の複数のビルドレッグで NU1603(警告のエラー扱い)により失敗している問題の解消が目的です。原因は、MSRC の協調サービシング中に内部でのみ使われる非公開の MsQuic パッケージ 2.5.11-ci.159417053 を参照していることで、公開ビルドからは入手できません。release/9.0-staging では対応する公開サービシングパッケージ 2.5.12 が利用可能になっており(#135884)、これを release/9.0 に取り込むためのマージです。作成者によると、System.Net.Quic を対象にした restore はローカルで NU1603 なしに通っています。この変更が release/9.0 に入り、internal-to-public マージが更新されれば、公開 CI で依存関係を通常どおり restore できる見込みです。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-ReadyToRun os-ios os-tvos os-maccatalyst os-wasi os-browser
crossgen2 の compareTypesForCast(CorInfoImpl.cs)は、R2R では「後の版で依存アセンブリが更新されるとキャストが成功しうる」ため、MustNot を常に May として JIT に返していました。その結果、box T; isinst X のパターンが定数畳み込みされず、R2R コードの否定的キャストではボックス割り当てとキャストヘルパー呼び出しが残っていました(例: MemoryExtensions.IndexOfAnyInRange<char> で 48 B/呼び出しの割り当て)。
本 PR では、バージョン間で結果が変わりえない場合に限り MustNot を維持します(COM 型等価を使わない型が対象)。判定は CorInfoImpl.ReadyToRun.cs の IsNegativeCastResultVersionResilient に実装されています。
値型ルール : fromType が値型で、toType がインターフェースでも System.Enum でもない場合
バージョンバブルルール : toType、fromType の基底型チェーンの全型、および fromType が実装する全インターフェースがバージョンバブル内にある場合(配列、バリアンスを持つジェネリックインターフェース/デリゲート、COM クラスは除外)
続きを読む
@ViveliDuCh ・ GitHub ・ Servicing-approved area-Infrastructure-libraries
release/8.0-staging ブランチで使用する MsQuic を、非公開の 2.5.11-ci.159417053 から公開パッケージの 2.5.12 に更新します。非公開の MSRC 向けパッケージを参照したままだと、公開 CI で restore が NU1603 で失敗してビルドが通らなくなる問題への対応です。マネージドコードの変更はなく、パッチバージョンの依存関係更新(1行)のみです。
続きを読む
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify が LdftnCtor と TailStackEmpty のエラーメッセージを表示できず、エラー名がそのままメッセージとして出力される問題を修正します。
Verifier は IL インポーターが報告するエラーのメッセージを、エラー名をキーに Strings.resx から検索します。エントリが存在しない、または空の場合はエラー名がそのまま使われます。LdftnCtor のエントリは LdftnConstructor という名前だったため一致せず、TailStackEmpty にはエントリ自体がありませんでした。
修正前後の CLI 出力(PR 作成者の報告より):
# 修正前
[IL]: Error [LdftnCtor]: ... LdftnCtor
[IL]: Error [TailStackEmpty]: ... TailStackEmpty
# 修正後
[IL]: Error [LdftnCtor]: ... ldftn/ldvirtftn not allowed on .ctor.
[IL]: Error [TailStackEmpty]: ... Stack not empty after tail call.
続きを読む
@BrzVlad ・ GitHub ・ arch-wasm area-ReadyToRun
CompExactlyDependsOn 属性を一部のメソッドに追加し、WebAssembly (wasm) 向けにコンパイルされるようにする変更です。複数の CompExactlyDependsOn が付いたメソッドは、指定された命令セットのうち少なくとも1つがサポートされている場合にのみコンパイルされます(すべてのISAが実行時に決定的にサポート/非サポートであることも前提)。対象メソッドはすでに PackedSimd に依存する他のメソッドの文脈で使われているため、不足していた属性を追加するだけでコンパイルが有効になります。
続きを読む
@ManickaP ・ GitHub ・ area-System.Net.Quic
OSX 上の mono runtime(MiniJIT)で発生する QUIC テストのタイムアウト対策として、該当テストを mono 環境で無効化する変更です。mono MiniJIT 専用のプラットフォーム検出が存在しないため、絞り込まず mono 全般でスキップする方針が取られています(絞り込むには yaml から msbuild 経由でテストプロセスへ環境変数を渡す必要があり、過剰と判断されています)。#133373 に関連します。
続きを読む
@ManickaP ・ GitHub ・ area-System.Net.Quic
QUICのテストにおける不安定さの修正です。WaitAsync に設定されていた3秒のタイムアウトが、キャンセル処理が完了する前に切れてしまうことがありました。その場合、クライアントストリームが破棄(graceful close)され、abortではなく例外が発生しない結果になっていました。このタイムアウトを削除しています。
なお、テスト自体は RunClientServer によるタイムアウトを既に持っているため、個別のタイムアウトがなくてもテストのハングは防止されます。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Sockets
ConnectAsync 完了後にソケットのブロッキングモードを元に戻す処理で、並行して Dispose が呼ばれると、すでに破棄された SafeHandle を使用して ObjectDisposedException が発生しうる問題を修正します。ブロッキングモードの復元はベストエフォートの最適化にすぎないため、並行 Dispose に起因する ObjectDisposedException は握りつぶす(無視する)ようにしています。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのレンジチェック最適化における「単調増加(monotonically increasing)判定」のバグ修正です。lcl + lcl の判定では両オペランドの初期値(seed)が非負であること(rejectNegativeConst)を要求しますが、オペランド自体が lcl + cns の場合、再帰呼び出しで rejectNegativeConst = false が渡されていました。その結果、i += k; k = m + 2 のようなパターンで m の負のseed(-4)が許容され、i が単調増加と誤判定されて i < -2 が false に畳み込まれていました。
修正として、lcl + cns のケースでも呼び出し元の rejectNegativeConst をそのまま引き継ぐようにしました。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのループ不変コード移動(hoisting)において、例外ハンドラ内で参照されるローカル変数へのストアが「外部から可視」と扱われていなかったため、後続のthrowしうる式(a / b)がプリヘッダへ誤ってhoistされ、catchハンドラが古い値を観測してしまう問題を修正します。
HoistVisitor はローカルがアドレス公開(address-exposed)されている場合のみストアをグローバルに可視と見なしていたため、state = i + 1 の後も m_canHoistSideEffects が true のままでした。本修正では、ブロックがハンドラへ例外をスローしうる場合に、ハンドラへlive-in/outなローカル、または untracked なローカルへのストアも可視として扱います。
続きを読む
@jkotas ・ GitHub ・ area-Tools-ILVerification
ILVerifyのエラー整理に関するPRです。unaligned. プレフィックスのアライメントオペランドが現状では検証されていなかったため、そのチェックを追加し、回帰テストを加えています。あわせて、既存の検証器が別のエラーコードでカバー済みの旧診断コメントアウト項目を削除しています。Closes #37393。
@caraioniurie47 ・ GitHub ・ area-System.Net community-contribution
IOControl_SIOCATMARK_Unix_Success テストの不安定さ(flaky)を修正するテスト専用の変更です。Unix では SIOCATMARK はデータ到着前から 0 であるため、既存のスピン待機が即座に終了してしまいます。その状態でクライアントが帯域内(in-band)バイトを先に読むと、帯域外(OOB)バイトがまだ届いておらずマークが存在しません。結果として SIOCATMARK == 1 を期待するアサートが 0 で失敗していました(OSSupport.cs:151)。
修正として、2 回の送信の後に Socket.Select(クライアントを error リストに指定、タイムアウト 10 秒)で OOB バイトの到着を待機し、クライアントがリストに残っていることをアサートします。既存のアサートはすべて維持されています。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのfgOptimizeRelationalComparisonWithFullRangeConstが、volatileByte >= 0のようなフルレンジ比較を定数に置き換える際、副作用チェックにGTF_SIDE_EFFECTのみを使っていたため、非フォールトのvolatileロード(GTF_ORDER_SIDEEFFのみ保持)が捨てられ、acquireセマンティクスが失われる問題を修正します。その結果、後続のロードがスピンループの外へホイストされる可能性がありました。判定をGTF_OBS_EFFECTに変更することで、volatileロードが保持されるようになります。
続きを読む
@Copilot ・ GitHub ・ area-Interop-coreclr
CCW(COM Callable Wrapper)の vtable とディスクリプタの初期化・公開が並行クエリ間で競合し、準備完了フラグが初期化完了前に観測される問題を修正するPRです。また、レイアウトフラグや遅延IIDフラグの競合更新でビットが失われ、使用中の vtable が再構築されうる問題も修正します。
@pcshrosbree ・ GitHub ・ community-contribution area-Diagnostics-cdac
cDAC の Loader_1.GetModuleHandles が、collectible アセンブリのアンロード後に AppDomain のアセンブリリスト内に残る空スロット(NULL)を読み込んで例外を投げる問題を修正します(Fixes #135518)。AppDomain::RemoveAssembly はアンロード時にスロットを NULL にしますが、ネイティブの AppDomain::AssemblyIterator::Next_Unlocked はこれをスキップします。Loader_1 も同様に null エントリをスキップするようにし、残りのモジュールを返せるようにしました。
続きを読む
@pcshrosbree ・ GitHub ・ community-contribution area-Diagnostics-cdac
ReJIT のパラメータ設定中に IL コードバージョンが取る状態 RejitFlags::kStateGettingReJITParameters (1)(例: プロファイラの GetReJITParameters コールバック実行中)を、cDAC の ReJIT コントラクトが扱えず InvalidOperationException を投げていた問題を修正します。ダンプ取得やライブアタッチがこの状態のメソッドを捕捉すると、SOS/DBI のクエリが失敗していました。
修正後は、Requested/Active 以外の未知の状態値(状態 1 を含む)を新設の RejitState.Unknown にマップし、例外を投げずにレガシー DAC と同様の挙動にします。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-System.Threading os-wasi os-browser
マルチスレッド非対応ランタイム(Browser/WASI)で、#123329 により一律に PlatformNotSupportedException(PNSE)になっていた同期待機を見直し、「待機が即座に完了できる場合」は正常に完了させるようにする変更です(#135335 の3コミットを Pavel 氏の authorship のまま含み、さらに Roslyn ワークスペース系テストのゲートを解除)。実際にブロックする場合のみ PNSE を投げるため、#123329 のイベントループのデッドロック防止は維持されます。代表的な影響先は Workspace.SetCurrentSolution 内の競合のない SemaphoreSlim.Wait です。
セマフォのカウント/タスク完了/イベントのセット状態がすでに利用可能な場合は待機が成功する
タイムアウト0の待機で条件未成立の場合は、PNSE ではなく通常の結果(false など)を返す
SemaphoreSlim、ManualResetEventSlim、Task、Monitor に一貫して適用
Thread.Sleep と WaitHandle の挙動は変更なし
マルチスレッド対象では、元の Task 待機のセットアップと継続パスを維持
API は Browser 向けの unsupported 注釈を維持(ブロックするかどうかは実行時状態に依存するため)
続きを読む
@pcshrosbree ・ GitHub ・ area-ILTools-coreclr community-contribution
マネージド版ilasm(src/tools/ilasm)をネイティブilasmの代替とするための一環として、ローカル変数の扱いにある3つの欠陥を修正するPRです。これにより、PortablePdbテスト(src/tests/ilasm/PortablePdb)のTestPortablePdbLocalScope4ケースが通るようになります(修正前は10ケース中6ケースのみ成功、修正後は全ケース成功)。
LocalScope/LocalVariableの行が未出力だった問題 : PDB要求時、名前付きローカルを宣言する字句スコープごとに、{から}のオフセット範囲でLocalScope行を出力し、各名前付きローカルにLocalVariable行(Index=スロット、属性0)を出力します。メソッド本体全体、.try/catch/filter/finally/faultの各本体もスコープとして扱われます。行は開始オフセット順、同一開始なら長い範囲が先にソートされます。
明示スロットが無視されていた問題 : .locals init ([3] int32 x)の[n]がスロットnとして扱われ(テーブルはパディング)、[n]なしのローカルは最大スロットの次を使用します。スコープを閉じて解放されたスロットは同じ型で再宣言可能です。ネイティブ同様の診断("Local var slot n is in use"警告、"type conflict"/"Undefined type of local var slot"エラー)を出力します。.locals内の...センチネルはスロットを消費しなくなりました。
ネストしたブロックで名前がスコープされない問題 : ブロックごとに名前スコープを持ち、最内側から検索します。同スコープ内では最初の宣言が優先され、名前は大文字小文字を区別します。
続きを読む
@BrzVlad ・ GitHub ・ area-VM-coreclr
Apple プラットフォームで、dispatch_async 経由で起動されたスレッド上から CoreCLR を初期化した場合、GC サスペンドに使うシグナル(INJECT_ACTIVATION_SIGNAL)がマスクされたままになり、そのスレッドが GC で停止せずアプリがハングし得る問題を修正します。
従来、外部スレッドをランタイムにアタッチする AllocatePalThread 経路ではシグナルのマスク解除が行われていましたが、CoreCLR 初期化スレッド自体には行われていませんでした。本 PR でこの初期スレッドにも同様のマスク解除を行います。作成者によれば、macios は CoreCLR をこのようなワーカースレッドから初期化しないため、モバイルのテストランナーなど主にテスト用途向けの修正です。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-Tracing-coreclr os-wasi
CoreCLR の WASI ビルドで EventPipe(FEATURE_PERFTRACING)を有効化する PR です。従来は無効だったため、EventPipe 経由の機能が動作せず、特に EventSource.CurrentThreadActivityId が常に Guid.Empty を返していました。browser CoreCLR と同様に、スレッドレス EventPipe(FEATURE_PERFTRACING_DISABLE_THREADS)を使って有効化します。
続きを読む
@jtschuster ・ GitHub ・ linkable-framework area-Tools-ILLink
ILTrimにおいて、PInvokeメソッドのシグネチャに含まれるパラメータ化された型(配列・ポインター・byref など)を再帰的に要素型へ正規化してから、フィールドおよびアロケーションの保持処理を適用するようにする変更です。これにより、パラメータ化型を経由して渡されるinterop型のフィールドが正しく保持されることを狙っています。
2026年10月15日 (35 PRs) この日のページ →
@vcsjones ・ GitHub ・ area-System.Security
PEMパース処理において、ラベルが空(-----BEGIN -----)の場合に、パース再開位置が進みすぎて有効なPEMを検出できなくなる問題を修正するPRです。#133137 で導入された「失敗が確定している内容の再パースを避ける」ための再開位置の最適化が、空ラベルという限定的なケースで先に進みすぎていました。
例えば次のようなPEMで問題が発生していました。
-----BEGIN -----BEGIN TEST-----\nZm9v\n-----END TEST-----
最初に -----BEGIN -----(空ラベルの有効なPreEB)が見つかるが、直後の BEGIN TEST----- が不正なBase64として扱われる。
修正前は BEGIN TEST-----\n... からパースを再開していたため一致せず、有効なPEMを見逃していた。
2つのPreEBは境界を共有しているため、空ラベルが最初に見つかった位置から再開する必要がある。
同様の修正が終端(EndEB)の探索側にも適用されています。
続きを読む
@ViveliDuCh ・ GitHub ・ Servicing-approved area-Infrastructure-libraries
release/9.0-staging ブランチで使用する MsQuic パッケージを、非公開の 2.5.11-ci.159417053 から公開パッケージの 2.5.12 に更新します。非公開(private)から公開(public)へのセキュリティ修正のハンドオフを完了させる目的で、internal-to-public マージ後も非公開バージョンの識別子が残らないようにします。これにより、公開 CI が非公開パッケージを復元できずに NU1603 で restore が失敗する問題を解消します。
続きを読む
@Copilot ・ GitHub ・ area-Infrastructure
Crossgen2 determinismテストで発生していた helperildll.dll のビルド競合を修正するPRです。従来は crossgen2smoke をグローバルな OutputPath 上書き付きの独自MSBuild呼び出しで再ビルドしており、別々のMSBuildインスタンスが中間ファイルを共有していました。その結果、helperildll.dll への同時書き込みが発生し、参照側が不完全なメタデータを読み込む可能性がありました。カスタムのMSBuild呼び出しを標準の ProjectReference に置き換え、ビルドを共有するようにしています。
続きを読む
@steveisok ・ GitHub ・ area-Infrastructure-libraries
モバイルターゲット(TargetsMobile が true)の場合、Helixの gen-debug-dump-docs.py ポストコマンドをスキップするよう変更するPRです。このスクリプトはデスクトップ用のtesthostレイアウトを前提としたホスト側ダンプのデバッグ手順を生成するもので、モバイルのクラッシュ診断には適用できません。モバイルジョブで実行すると、Windowsホストでは未展開のシェル変数エラー、Unixホストではスクリプト不在エラーが発生していました。
続きを読む
@pcshrosbree ・ GitHub ・ area-System.Diagnostics.Process community-contribution
PR #135753 で追加されたテスト HighNumberedFd_NotLeakedAfterLoweringRLimit が、32-bit musl(Alpine.324.Arm32)で setrlimit が -1 を返して失敗する問題の修正です。
原因は、テストが独自に宣言した nuint 2フィールドの RLimit 構造体を libc の getrlimit/setrlimit に P/Invoke していた点です。この構造体は arm32 で 8 バイトですが、musl は全アーキテクチャで rlim_t を unsigned long long と定義しており、struct rlimit は 16 バイトになります。このため getrlimit が構造体の範囲外に書き込み、setrlimit は newLimit の後続 8 バイトからハードリミットを読んで失敗することがありました。glibc の arm32 では rlim_t が 32-bit のため一致していました。
修正は、System.IO.FileSystem 等のテストと同様に、System.Native の Interop.Sys.GetRLimit/SetRLimit を使う形に変更するものです。System.Native が2つの ulong の RLimit をプラットフォームの struct rlimit に変換します。
続きを読む
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify において、メソッドの IL 範囲外を指す分岐ターゲットがあると、記録された BadBranch 診断を返す代わりに IndexOutOfRangeException をスローして CLI がそのメソッドで停止する問題を修正します。ReportInvalidBranchTarget で BadBranch を報告した後にそのメソッドの検証を中断するようにしました。これは ReportInvalidExceptionRegion や ReportMethodEndInsideInstruction と同じ扱いです。
原因は、共有コードの FindJumpTargets が範囲外ターゲットに対して ReportInvalidBranchTarget を呼ぶものの、ILVerify 側の実装は BadBranch を記録して戻るだけで、その後の InitialPass / インポートパスがターゲットで _basicBlocks にインデックスアクセスしていたことです。
再現例:
.method public hidebysig static void BranchOutOfIlSpace() cil managed
{
// IL_0000: br.s +0x10 (target IL_0012; the method is 3 bytes long)
br.s 0x10
ret
}
続きを読む
@springmin ・ GitHub ・ area-PAL-coreclr community-contribution
OpenHarmony (OHOS) 向けのcoreclr PALのビルド修正です。Androidと同様に、OHOSでは gcc_s、pthread、rt のリンクをスキップするようにしました。これらはOpenHarmonyツールチェーンがsysrootを通じて提供するためです。
作成者によるテスト方法は、openharmony-arm64 向けにCLRをクロスビルドし、coreclrpal がリンクできることの確認です。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITが Nullable<T> の BOX をインライン展開する際、GTF_IND_INITCLASS フラグが失われていたバグの修正です。impImportAndPushBoxForNullable は impGetNodeAddr から被ボックス値の間接参照フラグを取得(クラス初期化ヘルパーは別ステートメントに分離)していましたが、分解後の hasValue / value のロードにフラグを適用していませんでした。その結果、ループ不変コード移動(ループホイスティング)により、static な Nullable<T> フィールドのロードが静的コンストラクタのチェックより前に移動される可能性がありました。修正では、両方のロードにフラグを渡すようにしています。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITが符号付き整数の Log2(負数の場合に ArgumentOutOfRangeException をスローするフォールバックを持つQMARK展開)を行う際、IL評価スタックに残っている副作用を持つ式(呼び出しや先行オペランドの境界チェックなど)が、スローの後に評価されてしまう問題を修正します。展開結果を一時変数へ格納する際のスピル指定を CHECK_SPILL_NONE から CHECK_SPILL_ALL に変更し、保留中の副作用を先にスピルすることで評価順序を保証します。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITの impRotateHelper が、定数に対する32ビットの RotateLeft/RotateRight を畳み込む際、結果を uint32_t のまま gtNewIconNode に渡していたため、64ビットホストでゼロ拡張されてしまう問題を修正します。TYP_INT 定数は符号拡張されている必要があり、31ビット目が立つ結果(例: int.RotateLeft(1, 31))が +2^31 として扱われ、その値との比較が誤って畳み込まれていました。結果を int32_t にキャストすることで修正しています。
続きを読む
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
メソッドの最後の命令が条件分岐または switch である場合に、ILVerify が IndexOutOfRangeException(CreateBasicBlock 由来)でクラッシュする問題を修正します。fall-through ブロックの作成を、分岐の後に命令が存在する場合のみに限定し、存在しない場合は ReportFallthroughAtEndOfMethod を呼び出すようにしました。
続きを読む
@pcshrosbree ・ GitHub ・ area-CodeGen-coreclr community-contribution
JITのfgLinkBasicBlocksにおいて、メソッド末尾の条件分岐(BBJ_COND)が最終ブロックだった場合(制御がメソッド末尾から抜け落ちる不正なIL)に、本来発生すべきBADCODE("Fall thru the end of a method")チェックが到達不能になっていた問題を修正します。#95773以降、BBJ_CONDケースではcurBBdesc->IsLast()の判定より前にcurBBdesc->Next()(最終ブロックではnull)へのfalseエッジ追加が行われており、Checked JITではblock != nullptrのアサート失敗、Release JITではnull参照によるSIGSEGVが発生していました。IsLast()チェックをBBJ_CONDケースの先頭(両方のfgAddRefPred呼び出しより前)へ移動し、.NET 8と同様にInvalidProgramExceptionがスローされるようになります。条件分岐が最終ブロックでない場合の挙動は変わりません。新たな検証の追加ではありません。
続きを読む
@jkotas ・ GitHub ・ area-System.Diagnostics.Tracing
EventProvider および EventPipeEventProvider から不要なコード(デッドコード)を削除する整理目的のPull Requestです。合計で19行が削除され、追加はありません。
@springmin ・ GitHub ・ area-Infrastructure-coreclr community-contribution
OpenHarmony向けビルドでLTTngベースのイベントソース(FEATURE_EVENTSOURCE_XPLAT)を無効化する変更です。OpenHarmonyのsysrootには liblttng-ust が存在せず、LTTngの対象プラットフォームでもないため、OHOSビルドではAndroidと同様にEventPipeのみのイベント出力にフォールバックします。
@tannergooding ・ GitHub ・ area-CodeGen-coreclr
xarch向けJITエミッタにおいて、インデックスなし・ディスプレースメントがゼロ・ソースとデスティネーションのレジスタが異なる、base-onlyの lea dst, [base] を mov dst, base に書き換える変更です。この書き換えはエミッタのエントリポイントで適用されます。
self-LEA(同一レジスタ)の除去は維持されます。
インデックス付き、ディスプレースメント付き、baseなしの形式は変更されません。
AMD64の lea rsp, [rbp] は、エピローグの正しさのためLEAのまま残されます。
サンプルコードは提供された情報に含まれていません。
続きを読む
@jkoritzinsky ・ GitHub ・ area-System.Threading
Unix上の名前付きMutex(共有メモリ/ロックファイル)のセキュリティ強化を目的とした変更です。主な方針は以下のとおりです。
既定でユーザースコープのMutexを使用する
システム定義のユーザー単位ディレクトリ配下のファイルを既定で使用する(可能であれば一時的(ephemeral)なディレクトリを優先)
バックファイルへのパスにシンボリックリンクを許可しない
フォルダーのパーミッションは変更せず、正しく設定されていることを前提とする
あわせて、パス差し替え攻撃への耐性を高めるため、openat / mkdirat / unlinkat によるディレクトリディスクリプタ基準のファイル操作を導入しています。
続きを読む
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerification の VerificationResult.ErrorArguments が TypeVerifier 由来の結果や一部の例外由来の結果で null になっており、TryGetArgumentValue / GetArgumentValue が NullReferenceException を投げる問題を修正します。あわせて、TypeVerifier が報告する結果に Type が設定されていなかった点も修正します。
ErrorArguments の既定値を Array.Empty<ErrorArgument>() に初期化
TypeVerifier が報告する結果にも Type を設定(同メソッド内の例外由来の結果と同様)
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
WASM向けNativeAOTで、ファイナライザスレッドの作成呼び出しのみをスキップする変更です。Console.WriteLine の hello world を WASI/NativeAOT 上でコンパイル・リンク・実行できるようにするための一連のPRの一部です。
シングルスレッドでの立ち上げ段階の制限への対応であり、ファイナライゼーションの代替実装ではありません。自動ファイナライゼーションは引き続き未サポートで、保留中のファイナライザの待機も本変更では機能しません。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
WASI上のNativeAOTで Console.WriteLine の Hello World をコンパイル・リンク・実行可能にする一連のPRの一部で、残っていたリンクエラーを解消します。WASIのポータブルランタイムに必要なネイティブ互換定義を補う変更です。
stdcppshim.cpp に、libc++abi を必要としない __cxa_thread_atexit を提供します。WASI かつ pthread なしの場合のみ、プライベートな WASI_SINGLE_THREADED 定義で有効化されます。クリーンアップコールバックは、プロセス終了時に登録の逆順で実行され、破棄中に登録されたコールバックも含まれます。
unix/cgroupcpu.cpp をフルランタイム向けリストから、PalUnix.cpp と同じ共通Unixソースリストへ移動しました。Wasm では Linux の cgroup サポートではなく、既存の非Linux向けフォールバックが使われます。
なお、WASI SDK の libcabi には __cxa_thread_atexit が定義されていますが、今回の互換実装は libc abi を意図的に省くNativeAOTのリンク構成向けです。TLSクリーンアップを何もしない代替実装ではありません。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT/WASM(WASI)で Console.WriteLine の hello world をコンパイル・リンク・実行可能にするための一連のPRの一部です。Wasmのマネージド/ネイティブABIを合わせ、clangが生成したネイティブコードがリニアメモリ上にスタックフレームを確保する前に、マネージドスタックポインタ(SP)を公開(publish)するようにします。これにより、ネイティブ側のアロケーションが生きているマネージドフレームと重なって起きる起動時のメモリ破壊を修正します。Wasm GCのスタックスキャンは実装していません。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-CodeGen-coreclr
WASI/NativeAOT上で Console.WriteLine の Hello world をコンパイル・リンク・実行可能にするための一連のPRの一部です。NativeAOTの try 区間に対して、CoreCLR 用の try_table/catch再開方式ではなく、通常の Wasm block を出力するように変更します。これにより、NativeAOTのオブジェクト書き出しパスが未対応の WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB を出力しなくなります。
作成者は、これは例外処理の実装ではなくブリングアップ(立ち上げ)用の暫定対応であると明記しています。マネージドの catch/filter 実行や例外からの再開は引き続き未サポートです。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr reduce-unsafe
JITの範囲ベースのrelop(関係演算)畳み込みを改善し、ベクトル化されたSpanループで典型的に現れる冗長な境界チェックを除去します。Span.Sliceの(uint)X > (uint)Bndチェックや、Vector128.Createの長さチェックBnd - X >= cnsが畳み込まれ、a.Length - Vector128<ushort>.Countを上限とするループで境界チェックがすべて除去されます。
対象となるコード例(作成者提示):
static bool Equal(ReadOnlySpan<ushort> a, ReadOnlySpan<ushort> b)
{
if (a.Length != b.Length)
return false;
int i = 0;
if (Vector128.IsHardwareAccelerated)
{
for (; i <= a.Length - Vector128<ushort>.Count; i += Vector128<ushort>.Count)
{
var va = Vector128.Create(a.Slice(i));
var vb = Vector128.Create(b.Slice(i));
if (va != vb)
return false;
}
}
for (; i < a.Length; i++)
{
if (a[i] != b[i])
return false;
}
return true;
}
続きを読む
@tannergooding ・ GitHub ・ Servicing-approved area-System.Numerics
decimal から Half / BFloat16 への変換で発生していた二重丸め(double-rounding)を修正する、main の #135668 の release/11.0 向けバックポートです。厳密なフォールバック処理が、中間型を経由せず変換先の形式へ直接丸めるようになりました。また、Half のパースでは tie-to-even の指数境界が修正されています。
これにより、Half / BFloat16 の中間値(midpoint)付近の decimal 値が、中間値の誤った側にある隣接表現値へ変換される問題が解消されます。
続きを読む
@pcshrosbree ・ GitHub ・ area-GC-coreclr community-contribution
GC/API/GC/GetGeneration テストがCoreCLR環境で断続的に失敗する問題への対処です。GC.Collect() 直前に確保したオブジェクトが、収集後もgen0に残る場合があるためです(CIログでは 0 0 / arrayTest Failed!)。
原因は #126108 で RequiresProcessIsolation が外れ、マージ済みの GC ランナー内で他テストの後にインプロセス実行されるようになったことと推測されています(#132076 で Collect / Collect0 / Collect1 に同様の修正が入っており、GetGeneration は対象外でした)。
本PRは GetGeneration.csproj に同じプロパティグループ(プロセス分離)を追加します。テストをgen0残留を許容する形に緩めることは意図的に避けています(昇格の検証が目的のため)。
続きを読む
@rzikm ・ GitHub ・ area-Codegen-Interpreter-mono runtime-mono
Mono インタープリタで、finally ハンドラー内でOSR(On-Stack Replacement)が発生した際にローカル変数の値が破損する問題を修正するPRです。
SSAのコピー伝播により、保存済みのILローカルが別のフレームオフセットにある一時変数に置き換えられることがあります。finally 内のループによって現在のフレームがtier upされると、最適化後の継続コードが元のローカルではなく一時変数を読んでしまい、保留中の戻り値やハンドラー後に使われるローカルが誤った値になります。
EHブロックはSSAのCFGの外側にあるため既存のtiering定義では保護されていませんでした。本PRでは、finally ハンドラーの継続マーカーで MINT_DEF_TIER_VAR を再利用し、呼び出し元ブロックからlive-outとなるSSA対象のILローカルを保護します。この追加保護はEHバックエッジのパッチポイントを持つメソッドにのみ適用され、SSA・tiering・OSRは有効なままです。
再現コード(PR記載の最小化したもの)の要点:
[MethodImpl(MethodImplOptions.NoInlining)]
private static int ThroughFinally(int value)
{
try
{
return Identity(value);
}
finally
{
for (int i = 0; i < 1_000; i++)
{
Thread.SpinWait(1);
}
}
}
修正前のMonoインタープリタでは 42 を返すべきところ 1 が返り(5回中5回再現)、修正後は 42 が返ります。
続きを読む
@pcshrosbree ・ GitHub ・ area-CodeGen-coreclr community-contribution
JITが、メソッドのエントリポイント(IL offset 0)がハンドラまたはフィルタの内部にあるメソッドを受け入れてしまう問題を修正します。ECMA-335 I.12.4.2.8.1 では、これらのリージョンへの進入は例外処理機構が制御するものとされています。修正後は、このようなメソッドを InvalidProgramException として拒否します。
修正前の挙動(PR作者の報告):
linux-x64 の main Release JIT では、EntryInFinally / EntryInFault / EntryInCatch がコンパイルされ、戻ってしまう
main Checked JIT では fgDebugCheckBBlist で block->bbRefs == blockRefs のアサートが発生する
出荷済みの .NET 10.0.12(linux-x64)では、コンパイルは成功するが呼び出すとスタックオーバーフローする
pop で始まる catch / filter のバリアントは、インポータのスタックアンダーフローチェックで既に拒否されている
続きを読む
@adamperlin ・ GitHub ・ area-CodeGen-coreclr
WebAssembly(Wasm)ターゲットのJITにおける fgWasmSpillRefs パスの最適化です。これまでは未消費のGC参照型の一時値をすべてスピルしていましたが、直近の呼び出しにそのまま引数として渡される値についてはスピルを省略します。GC安全性の維持は呼び出し先(callee)の責務とする方針です(R2Rのfixup thunkも着信引数を既定でGC保護するとされています)。
MyClass x = Allocate();
Use(x); // x は直近の呼び出しに渡されるだけなので、スピル不要になる
一方、ネストした呼び出しなど、参照が直近の親以外で未消費のまま残る場合は、従来どおりスピルが必要です。
MyClass x = Allocate();
M(x, F()); // x は M のオペランドだが、F() の実行中(GCが起こりうる)も生存するためスピルが必要
続きを読む
@BrzVlad ・ GitHub ・ area-VM-meta-mono
Mono ランタイムで、ジェネリックの inflate 時にカスタム修飾子(cmod)の数が無制限に積み上がり、個数を保持する uint8_t がオーバーフローして、後続のコピーで確保済みバッファを超えて書き込む可能性がある問題を防ぐ修正です。
型が持つ cmod は通常少数で、Mono には上限(MONO_MAX_EXPECTED_CMODS)が定義されています。しかし generic inflation では上限をチェックせずに修飾子が追加されます。
合計数を size_t で計算し、uint8_t に縮小する前に上限を超えていないことを assert します。
上限を超える型は元々一貫してサポートされておらず(AOT の decode_type も同じ上限を assert)、サポート範囲の拡大ではなく、失敗を決定的(deterministic)にする変更です。
再現パターンの例(IL 上の概念的な表現):
D1<T> : Base<T modopt(A1) ... modopt(A60)>
D2<T> : D1<T modopt(B1) ... modopt(B60)>
D3<T> : D2<T modopt(C1) ... modopt(C60)>
D4<T> : D3<T modopt(D1) ... modopt(D60)>
D5<T> : D4<T modopt(E1) ... modopt(E60)>
続きを読む
@davidwrighton ・ GitHub ・ area-ReadyToRun
CoreCLR の WebAssembly R2R マネージドメソッドのプロローグを縮小するため、メソッドごとの関数テーブルインデックス生成をやめ、コンパクトな「フレームアイデンティティ」に置き換える変更です。JIT・R2R コンパイラ・VM・cDAC のスタックウォーカーにまたがる変更で、インタプリタは変更されていません。
フレームアイデンティティの形式:
通常のマネージドメソッド: 受け取った portable entrypoint(PEP)をそのまま保存
マネージド JIT ヘルパー: CoreLib のランタイム関数を示す定数の負の奇数を保存
funclet: タグ付けされた establishing-frame ポインタを保存
reverse P/Invoke メソッド: PEP 引数を持たないため、正の奇数の関数テーブルインデックスを維持
スタック処理側でこれらのアイデンティティをメソッドの仮想 IP に解決します。アイデンティティの再配置(relocation)は対象メソッドを明示的に保持するため、JIT インターフェースは「常にコンパイル中のメソッドを指す」前提を置かなくなり、将来のメソッド間直接呼び出しにも対応できます。
続きを読む
@pcshrosbree ・ GitHub ・ area-ILTools-coreclr community-contribution
managed 版 ilasm(src/tools/ilasm)が生成する Portable PDB を、ネイティブ ilasm の挙動に近づける変更です(#135212 の一環で、別ファイル .pdb 出力の #135289 はマージ済み)。ドキュメントの扱いをポイント単位に改め、入力ファイルと .line ファイルをドキュメントとして記録し、LocalSignature の行 ID を正しく書き出します。あわせて --pathmap オプションを追加しています。
続きを読む
@lewing ・ GitHub ・ area-CodeGen-coreclr
WebAssembly(wasm)向けJITの fast tail call において、シャドウスタックポインタ(SP)引数が GT_PHYSREG であると仮定していたアサーションを削除する修正です。WasmRegAlloc::CollectReferencesForCall は SP 引数を ADD(SP, FRAME_SIZE) でラップしますが、オペランドが一時変数(temp)に評価される場合があり、その際にアサートが発火していました(regallocwasm.cpp:589)。
例として、長い sb.Append(..).Append(..)...ToString() のチェーンでは gtMayHaveStoreInterference が 8 個のストアで判定を諦めるため、arg morph が SP 引数を temp に退避し、アサートに抵触します。temp も同じ post-prolog の SP 値を保持しているため、temp をラップしても同様に正しい動作となります。
続きを読む
@Copilot ・ GitHub ・ area-Diagnostics-coreclr
debug/di/cordb.cpp の SUPPORT_LOCAL_DEBUGGING ifdef を削除するクリーンアップです。このマクロは ARM 専用の DbiGetThreadContext / DbiSetThreadContext(アウトオブライン実装)でのみ使用されていました。ARM32 は Unix でのみサポートされ、Unix では当該マクロが 0 だったため、これらの関数は常に assert して FALSE を返すだけのスタブでした。この PR でスタブとマクロを削除し、ARM も他のプラットフォームと同じマクロを使うようにしています。
#define DbiGetThreadContext(hThread, lpContext) ::GetThreadContext(hThread, (CONTEXT*)(lpContext))
#define DbiSetThreadContext(hThread, lpContext) ::SetThreadContext(hThread, (CONTEXT*)(lpContext))
続きを読む
@jtschuster ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT の WASM 向け CoreLib をスタブ化してビルドできるようにする変更です。スタック巻き戻し・GC・例外処理(EH)の設計が未確定のため、必要なヘルパーをいったんスタブ化し、ilc が WASM モジュールをコンパイルできるようにすることが目的です。作成者によれば、リンクや実行はまだできず、ブロッカーの一つを解消する位置づけです。
@Dev-next-gen ・ GitHub ・ area-System.Net.Http community-contribution
マネージド実装の HttpListener がリクエスト解析時に、LF を伴わない単独の CR(bare CR)を黙って捨てて前後の文字列を連結してしまう問題を修正します。RFC 9112 §2.2 では、単独 CR を受け取った場合は要素を不正として扱うか CR を SP に置換することが求められており、現状はどちらにも該当しません。本変更では、LF が直後に続かない CR を拒否するようにし、http.sys(Windows)の挙動(400 を返す)に揃えます。
作成者の検証では、以下のようなリクエストがマネージド実装では受理され、http.sys では 400 になっていました。
Content-Le\rngth: 5 → Content-Length: 5 として扱われる
X-Test: ab\rcd → ヘッダー値が abcd になる
GET /c\rd HTTP/1.1 → RawUrl が /cd になる
Host: localhost\r\r\n → 受理される
チャンクサイズ行 1\r0\n → 0x10 バイトのチャンクとして読まれる
続きを読む
@AaronRobinsonMSFT ・ GitHub ・ area-VM-coreclr
VM内で展開されていた CONTRACTL ブロックを、意味的に等価な箇所で STANDARD_VM_CONTRACT / STANDARD_VM_CHECK に集約するリファクタリングです。あわせてデバッガ関連のコントラクトを簡素化し、不要になった遅延初期化の仕組みを削除しています。協調モード/プリエンプティブモードの両方から呼ばれ得るヘルパー(メタデータ取得、静的フィールドアドレス取得など)は、誤った MODE_PREEMPTIVE チェックを追加しないよう、モード非依存のまま維持しています。
続きを読む
2026年10月14日 (41 PRs) うち Bot 4 件 この日のページ →
@tarekgh ・ GitHub ・ area-System.DateTime
ヘブライ語の数値(Hebrew numbers)を含む日時文字列を DateTime でパースする際、不正な入力が適切に失敗するよう修正するPRです。時・分・秒の各サフィックスに関する回帰テストが追加されています。
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
callvirt の対象が static メソッドの場合に、ILVerify が ImportCall 内で NullReferenceException をスローしてクラッシュする問題の修正です。CallVirtOnStatic のチェックを FatalCheck に変更し、該当メソッドの検証を CallVirtOnStatic エラーとして打ち切って、次のメソッドの検証を継続できるようにします。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
Native AOT/WASM(WASI)向けのブリングアップの一環として、GcScanRoots 内の WASM 向けシャドウスタック走査(GcScanWasmShadowStack)を削除し、WASM では StackFrameIterator によるスタック走査を行わない(実質 no-op)ようにする変更です。旧 NativeAOT-LLVM プロトタイプ由来の t_pShadowStackTop/t_pShadowStackBottom(未定義のグローバル)への依存を取り除き、不要なリンク依存を解消することが目的です。CrossThreadUnhijack() の処理はそのまま維持されます。
作成者自身が明記している通り、これは WASM でのマネージドスタックルート列挙を未実装のままにするもので、GC の正しさを修正するものでも、本番利用可能なスタック走査のサポートでもありません。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
WASM/WASI 向けの NativeAOT ブートストラップ(main.cpp)において、モジュール検出方法を変更するPRです。リンカのセクション境界シンボルではなく、ModulesSectionNode が出力する単一の __Module スロットを使用します。このスロットには ReadyToRun ヘッダへのポインタが格納されており、ブートストラップは &__Module とモジュール数 1 を InitializeModules に渡します。
WASI/NativeAOT で Console.WriteLine の Hello World をコンパイル・リンク・実行可能にするための一連のPRの一部です。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
WASM(WASI/Native AOT)ターゲットでは MethodAssociatedDataNode を出力しないよう、MethodHasAssociatedData が false を返すように変更しています。現行の associated-data 形式はアンワインド情報にメタデータを付加し、相対ターゲットポインタを出力しますが、これは WASM の表現に適合しません。実際のリンク失敗として、instantiating unboxing stub の associated-data レコードから関数シンボルを指す R_WASM_MEMORY_ADDR_LOCREL_I32 リレーションが発生していました(WASM の関数ポインタはテーブルインデックスであり、リニアメモリ相対アドレスではないため)。
Console.WriteLine の hello world を WASI/Native AOT でコンパイル・リンク・実行可能にするための一連の PR の一部です。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-CodeGen-coreclr
WASM向けJITの fgGetSharedCCtor にある CORINFO_HELP_INITCLASS の早期リターンを、CoreCLR(FEATURE_NATIVEAOT でない場合)に限定する変更です。これによりNativeAOTでは、既存のReadyToRunのクラスコンストラクタ/静的ベースヘルパー選択ロジックを利用できます。ILCが実装できないヘルパーを要求していたことで、System.AppContext.OnUnhandledException(object) のコンパイル中に System.NotImplementedException: CORINFO_HELP_INITCLASS が発生していた問題を解消します。修正後のJITダンプでは CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE が選択されます。
WASI上でnative AOTを使って Console.WriteLine のhello worldをコンパイル・リンク・実行できるようにする一連のPRの一部です。
続きを読む
@Copilot ・ GitHub ・ Servicing-approved area-System.IO.Compression
ZstandardDictionary.Train の戻り値を、特定の品質で準備済みの ZstandardDictionary から、辞書の生バイト列 (byte[]) に変更します。従来は Train が既定品質で準備した辞書を返すため、呼び出し側が指定した圧縮品質が上書きされる問題がありました。生バイト列を返すことで、呼び出し側が任意の品質で ZstandardDictionary.Create により辞書を準備できます。
main ブランチの PR #135424 の release/11.0 へのバックポートです。
byte[] data = ZstandardDictionary.Train(samples, sampleLengths, maxDictionarySize);
using ZstandardDictionary dictionary = ZstandardDictionary.Create(data, quality: 19);
続きを読む
@adamsitnik ・ GitHub ・ area-System.Diagnostics.Process
ProcessStartInfo の InheritedHandles(ハンドル継承の制限)をUnixで強制する際の実装を、より高速な方法に置き換える変更です。利用できない環境ではエラーで失敗するようにしています。ただし、提供された情報には具体的な実装方式(使用するシステムコール等)の記述がなく、変更差分の規模(pal_process.c で +27/-55)から、ネイティブ層の処理が簡素化されたことのみが読み取れます。
続きを読む
@ManickaP ・ GitHub ・ area-System.Net.Http
HTTPリダイレクト時に、Proxy-Authorization ヘッダーをクリアするようにする修正です(RedirectHandler.cs の変更)。提供された情報にはPRの説明文がないため、変更の背景や詳細な動機までは不明です。リダイレクト先リクエストにプロキシ認証情報が引き継がれないようにする変更と解釈できます。
@Copilot ・ GitHub ・ area-System.Net.Security
SslStreamTlsResumeTests の並列実行を無効化するPull Requestです。このクラスは接続間のセッションキャッシュ状態に依存するため、並列テストコレクション外で実行することで、同じアセンブリ内の他テストがその状態へ干渉するのを防ぎます。dotnet/runtime#135689 で試みられたテスト単位のプロセス分離を、コレクション単位のシリアライズに置き換える内容です。
@rzikm ・ GitHub ・ area-System.Net.Security
SslStream の TLS 1.3 ポストハンドシェイク認証(Post-Handshake Authentication)に関するテストを追加するPRです。あわせて SslStream.IO.cs と SslStreamPal.Unix.cs に小規模な変更(それぞれ +12 行、+4 行)が入っています。PRタイトルは TlsSession を対象としていますが、変更内容の詳細は提供情報からは確認できません。
続きを読む
@dhartglassMSFT ・ GitHub ・ area-CodeGen-coreclr
GC stress 環境で無効化されていた Vector3Interop テストを再度有効化する変更です。テストが無効化された原因は #127827 で、#127973 以降は最新のコードでテストが成功するようになったため、無効化を解除しています。
@bartonjs ・ GitHub ・ area-System.Security
EnvelopedCms.Decode が Windows 上でのみ属性のマージ(attribute-merge)処理を実行していた問題を修正します。.NET Framework の Decode では属性のマージは行われておらず、SignedCms や Windows 以外の EnvelopedCms でもマージは行われていません。この変更により、Windows での挙動を他のケースと揃えます。
@PranavSenthilnathan ・ GitHub ・ area-System.Security
SignedCms(System.Security.Cryptography.Pkcs)および SignedXml / EncryptedXml(System.Security.Cryptography.Xml)、さらに System.Private.Xml の XmlTextReader 周辺の処理を改善する変更です。PR の説明文は提供されていないため、以下は変更ファイルから読み取れる範囲での要約です。
System.Private.Xml: XmlTextReaderImpl(同期/非同期)を修正し、LocalAppContextSwitches に新規スイッチを追加。属性バッファの無効化に関するテスト(AttributeBufferInvalidationTests)が追加されています。
System.Security.Cryptography.Pkcs: SignedCms(+173/-13)を中心に処理が変更されており、SignerInfo、Rfc3161TimestampRequest にも小規模な修正があります。
System.Security.Cryptography.Xml: SignedXml(+221/-146)、EncryptedXml(+243/-67)、Utils(+271/-5)、XmlDecryptionTransform など、ライブラリ全体にわたる大きな変更が入っています。独自の LocalAppContextSwitches(新規、+70)が追加されています。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
Native AOT の WebAssembly (WASM) 出力に DWARF の行番号情報を出力するようにし、WASMTIME_BACKTRACE_DETAILS=1 を指定した wasmtime がソースファイル名・行番号付きでバックトレースを表示できるようになります。ローカル変数・引数の情報は RyuJIT 側に情報がないため出力されません。
PR 説明に示されている実行例(抜粋):
1: 0x43b - reproZero_Program__DoAbort
at D:\git\runtime2\src\coreclr\tools\aot\ILCompiler\reproZero\zerosharp.cs:164:0
2: 0x3d5 - reproZero_Program__Main
at D:\git\runtime2\src\coreclr\tools\aot\ILCompiler\reproZero\zerosharp.cs:156:0
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのrange check cloning(境界チェックの複製による最適化)において、インデックスまたは配列長が TYP_INT でない境界チェックを事前に除外する修正です。
従来の BoundsCheckInfo::Initialize は、非定数パスでのみインデックスの型を確認していました。そのため arr[(nint)0] のような TYP_LONG の定数インデックス(長さ側も CAST(long <- ARR_LENGTH) になる)が IsIntCnsFitsInI32() を通過して受け入れられていました。一方、optRangeCheckCloning_DoClone はガード条件を TYP_INT として生成するため、int/long 混在の relop が作られ、Checked ビルドではアサート、Release ビルドでは不正な IR が生成されていました。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITの gtGetHelperCallClassHandle が、インターフェイスや不明なターゲットの場合に value 引数のクラスを使用し、その「非null」プロパティまでコピーしていた問題の修正です。この挙動は chkcast では正しいものの、isinst は失敗時に null を返すため、型比較の畳み込み(type compare folding)で本来必要な null チェックが削除されていました。isinst ヘルパーについては isNonNull をクリアするようにしています。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITの gtCanSwapOrder が、第1オペランドの GTF_ORDER_SIDEEFF のみを並べ替え不可として扱っていたバグの修正です。アサーション伝播により「例外を発生させない」と証明された除算は GTF_ORDER_SIDEEFF のみを保持します。このため、その証明の根拠となる checked な加算より前に除算が入れ替えられ、誤った例外がスローされる可能性がありました。修正後は、第2オペランドの順序付けの副作用も他の並べ替え不可の副作用と同様に扱います。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
xadd [mem], reg は、メモリの古い値をレジスタ側に書き戻す命令ですが、JIT のエミッタでは xchg にだけ読み書き(RW)レジスタ形式が与えられ、xadd は読み取り専用の形式のままでした。そのため、冗長な mov を除去するピープホール最適化が lock xadd をまたいで遡り、結果のゼロ拡張である mov eax, eax を誤って削除していました。本 PR は xadd にも xchg と同じ RW レジスタ形式を使うよう修正します。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
xarch(x86/x64)向けJITで、address-exposedなローカル変数へのvolatileアクセスが、エミッタのスタックmovパス経由で出力され、IsRedundantStackMovがvolatileを考慮しないために、同一の連続ストア(またはストア直後のロード)が除去されてしまう問題を修正します。volatileな間接参照ではローカルのアドレスをレジスタに保持し、これらのアクセスが省略されないようにします。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITの optRemoveRedundantZeroInits が、プロローグからの全経路が走査対象ブロックを通ると仮定して、一意な BBJ_ALWAYS 後続ブロックをたどっていました。しかし合流ブロックには、ローカル変数(例: アドレス露出されたもの)に書き込む catch ハンドラ経由でも到達できるため、そこにある明示的なゼロ初期化ストアが誤って削除されていました。本PRは、先行ブロック(EH 経由を含む)が複数あるブロックで走査を停止するようにし、この誤削除(誤コンパイル)を修正します。正しさのために必要な修正です。
続きを読む
@ViveliDuCh ・ GitHub ・ area-System.ComponentModel.DataAnnotations
System.ComponentModel.Annotations の非同期検証API(Validator の非同期オーバーロード、AsyncValidationAttribute.GetValidationResultAsync など)に関する XMLドキュメントコメントのみ の修正です。API docsレビューで得られた指摘を反映し、キャンセル時の挙動や戻り値の契約を明確にしています。実行コード、APIシグネチャ、参照アセンブリは変更されていません。
続きを読む
@mdh1418 ・ GitHub ・ area-NativeAOT-coreclr
CoreCLRとNativeAOTで挙動が異なっていた EventPipeThreadSamplingRate の解析方法を揃えるPRです。CoreCLR側の設定定義を変更し、NativeAOT側と同じ挙動にすることで混乱を減らすことが目的です。
@eiriktsarpalis ・ GitHub ・ area-System.Formats.Cbor
System.Formats.Cbor の CborReader における例外処理の修正です。
予約済みの additional-information 値 28〜30(初期バイト 0xFC、0xFD、0xFE)は不正な CBOR ですが、従来は ReadSimpleValue が InvalidOperationException を報告していました。スキップ API やエンコード済み値 API でも同じ例外が漏れていました。これらの入力は、適合性チェックが無効な場合も含め、CborContentException をスローするようになります。
ReadUnixTimeSeconds は、エンコードされた Unix 時刻が DateTimeOffset で表現できない場合、数値変換で発生する ArgumentOutOfRangeException と OverflowException の両方を InvalidOperationException に変換します。元の例外は内部例外として保持され、失敗時にはリーダーのチェックポイントが復元されます。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
ARM64 JITにおいて、構造体引数をスタックに渡す処理(genPutArgStk)で使われる ldp 命令の上位(2番目)レジスタに、誤ったGCタイプが設定されていた問題を修正します。2番目のフィールドのGCタイプを上位レジスタに使用するようにしました。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
ARM/ARM64 の JIT における genLclHeap(localloc/stackalloc)の非ゼロ初期化パスで、sp - size のラップアラウンド(SPの巻き戻り)検出に、符号付きオーバーフロー判定(bvc/EJ_vc)ではなくキャリーフラグを使うよう修正します。
修正前は、巨大な stackalloc を行うと SP がラップした値に設定され、プローブされずにスタックオーバーフローとして扱われませんでした。
Fixes #135524
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
ARM64 JITにおいて、SELECTノードがレジスタ条件を保持したまま(例:CCMPチェーンが長すぎてTryLowerConditionToFlagsNodeで処理できない場合)、Lowering で GT_SELECT_INC/NEG/INV に変換されることがあるものの、LSRA・VisitOperands・コード生成(INC)がこれらのノードに対応していなかった問題を修正します。あわせて、TryLowerCnsIntCselToCinc で GT_SELECT の場合も GT_SELECTCC と同様に、小さい方の定数を CINC のベースとして保持するようにしています。
続きを読む
@Copilot ・ GitHub ・ area-CodeGen-coreclr
ARM64のstore-pair(stp)最適化やindirectionの並べ替え時に、cneg が対応する cmp より前に移動し、k % 2 が古いフラグ(アロケーションヘルパー由来)を読んでしまう問題の修正です。.NET 10では、非負の奇数入力に対して -1 が返る可能性がありました。
修正は、フラグの生成側・消費側としてマークされたノードの移動を、store-pairおよびpost-indexed addressingの最適化で拒否することで行われています。これはJIT(コンパイラ)の内部実装の変更で、公開APIへの影響はありません。
続きを読む
@am11 ・ GitHub ・ area-System.Security os-freebsd community-contribution
FreeBSDにおいて、OpenSSL v4(.so.19)へのフォールバックを追加するPRです。作成者によると、他のプラットフォームと挙動を揃えることが目的です。
@pcshrosbree ・ GitHub ・ community-contribution area-CodeGen-Interpreter-coreclr
Checked ビルドで、インタープリターのスタックスロットを検証付きの OBJECTREF(Thread::dangerousObjRefs テーブルで検証される)経由で読み書きしていたため、過去の無関係なエントリが残っていると後続の読み取りで誤って assert する問題(#135535)を修正します。スタックスロットを生のオブジェクトポインタとして扱う方式に変更しました。
LOCAL_VAR_OBJREF(生ポインタ→OBJECTREF)と SET_LOCAL_VAR_OBJREF(OBJECTREF→生ポインタ)を導入し、OBJECTREF / DELEGATEREF / CONTINUATIONREF / BASEARRAYREF のスロットアクセスを置き換え。
仮想呼び出しの解決(CALLVIRT のキャッシュミス、CALLDELEGATE / CALLI の open virtual delegate)は ResolveVirtualCallTarget を経由し、レシーバをネイティブの OBJECTREF ローカルにコピーして GCPROTECT_BEGIN で保護した上で MethodDesc::GetMethodDescOfVirtualizedCode に渡すようにしました。
GCFrame::Remove は変更なし(以前のリビジョンの _DEBUG ループ削除は元に戻されています)。
続きを読む
@pcshrosbree ・ GitHub ・ area-VM-coreclr community-contribution
Windows x64(CETシャドウスタック有効)のCheckedランタイムで、ランタイムが catch ハンドラ末尾で再送出したスレッドアボートを、同一メソッド内の別ハンドラが捕捉した際に CallCatchFunclet 内のアサートが失敗する問題を修正します。アサート条件に「フォールトしたフレーム(faulted frame)」を許容する節を追加するもので、Releaseビルドの動作は変わりません。
原因(作成者の説明による):
EECodeManager::ResumeAfterCatch は、このようなスレッドを ThrowControlForThread へ送ります。
RedirectForThrowControl は FaultingExceptionFrame に、リダイレクト時点のSSPを記録します。
このフレームは呼び出し地点で停止したものではなく割り込まれたものであるため、SSP直下のスロットに ControlPC が入っていません。そのため、catchハンドラがそのフレームにある場合にアサートの最後の節が失敗します。
SSPが指すのはフレームのリターンアドレスで、フレームの再開に必要なのはこちらです。
続きを読む
@sbomer ・ GitHub ・ area-Infrastructure
src/coreclr/Directory.Build.targets の MoveSymbolFiles(全マネージドプロジェクトのPDBを $(RuntimeBinDir)PDB\ に集約するターゲット)を削除し、唯一の実質的な利用者である eng/liveBuilds.targets が CoreLib のマネージドPDBを本来の出力先 IL\ から直接読むように変更しています。
背景として、同一アセンブリ名を持つビルドバリアント(例: crossgen2 の通常ビルドと publish ビルド)が共有フォルダ内でPDBを上書きし合い、配布されるDLLと一致しないPDBが残る問題があったと説明されています。.ni.pdb は crossgen-corelib.proj が直接書き出すため影響を受けません。
続きを読む
@AaronRobinsonMSFT ・ GitHub ・ area-VM-coreclr
FEATURE_CORPROFILER の設定を整理し、ランタイムおよび CoreLib のプロファイラーサポートを一貫して制御できるようにする変更です。プロファイラー無効ビルドでは、プロファイラー専用のヘルパーやスタブ(WASM 向けの未サポート用プレースホルダーを含む)がビルドから除外されます。DAC のプロファイリングデータとプロファイラーの attach/detach は、独立して設定可能な状態を維持します。
続きを読む
@tarekgh ・ GitHub ・ area-Infrastructure
pull_request_target で動作する破壊的変更ドキュメント生成ワークフロー(breaking-change-doc)が、ドラフト成果物を生成しながらコメントを投稿せずに「成功」扱いで終了してしまう問題を修正します。dotnet/runtime#135277 マージ後の実行で、必要なシェルコマンドが拒否されたにもかかわらずワークフローが失敗しなかったことが発端です。
主な対応は次のとおりです。
ヘルパースクリプトを使えるよう、デフォルトの浅いチェックアウトを1回だけ構成
必要最小限のコマンド(jq、mkdir)のみ許可
生成結果・投稿先PR・コメント本文を検証し、不完全な生成や投稿失敗は拒否
生成ジョブが成功しない限り投稿を行わないよう制御
続きを読む
@jkoritzinsky ・ GitHub ・ arch-wasm area-VM-coreclr
FEATURE_MULTITHREADING を持たない CoreCLR ビルド(browser / WASI wasm を含む)から、複数ネイティブスレッドおよびスレッドごとの静的ストレージ用の仕組みを取り除き、単一のネイティブ Thread を前提とした実装に簡素化する変更です。
ネイティブのスレッド ID と ThreadStore を単一スレッド前提に整理。DirectOnThreadLocalData のネイティブスレッドポインタと、開始操作が未サポートのままの managed 側 unstarted Thread オブジェクトは維持。
マルチスレッド無効時、managed のスレッド静的変数は通常の静的変数として扱う。crossgen2 と ReadyToRun のメタデータも単一スレッドモデルを表現するよう更新。
wasm は引き続きネイティブの GC ポーリング実装を使用。managed 側のポーリングのフォールバックは GC トランジションを実行。単一スレッド時のスピン待機の上限は 0(マルチスレッド時の挙動は維持)。
続きを読む
@sbomer ・ GitHub ・ linkable-framework area-Tools-ILLink
ILLink MSBuildタスクに、呼び出し全体の結果をキャッシュする実験的機能を追加します。ILLINK_EXPERIMENTAL_CACHE で有効化し、ILLINK_EXPERIMENTAL_CACHE_PATH で保存先を上書きできます。成功した出力はリンカーを再実行せずに再利用されます。あわせて、指定したUTCカットオフ以前に最後に使われたエントリを削除する、スタンドアロンのメンテナンスツール(ILLink.CacheTool)も追加されます。これは初期実装であり、範囲は限定的です。
続きを読む
@springmin ・ GitHub ・ area-Infrastructure-libraries community-contribution
OpenHarmony(HarmonyOS)向けポートシリーズ(トラッキング Issue: #132866)の第1弾として、HarmonyOS NDK を用いた openharmony ターゲットのクロスビルド基盤を追加する PR です。変更はすべて TargetsOpenHarmony(--os openharmony 指定時のみ有効)でガードされており、既存プラットフォームには影響しない(no-op)と説明されています。
続きを読む
2026年10月13日 (37 PRs) うち Bot 2 件 この日のページ →
@elinor-fung ・ GitHub ・ area-Host
Unix上でデフォルトのservicingディレクトリのルートが /opt/servicing ではなく opt/servicing(先頭スラッシュなしの相対パス)として組み立てられていた問題を修正します。あわせて、必要なアクセス権限を持たないservicingディレクトリは拒否されるようになります。
@tannergooding ・ GitHub ・ area-CodeGen-coreclr
Half.ReciprocalEstimate と Half.ReciprocalSqrtEstimate をハードウェアイントリンシックとしてインポートする際に、負のISA前提条件(negative ISA prerequisites)を保持するようにJITを修正しています。これにより、ReadyToRun(R2R)では既存の非決定的イントリンシックのポリシーに従って、estimate系に依存するコードをガードできるようになります。精密な Half.Sqrt には影響しません。
続きを読む
@tannergooding ・ GitHub ・ area-CodeGen-coreclr
x64 JITにおいて、ローカル変数のフレームオフセットがゼロに解決された場合、lea reg, [base] の代わりに mov を生成するよう変更します。フレームレイアウト確定後にチェックを行い、元の emitAttr を維持します。インデックス付きの場合や動的なスタック相対アドレッシングの場合は対象外です。
@tannergooding ・ GitHub ・ area-CodeGen-coreclr
x64向けハードウェアイントリンシックのジャンプテーブル・フォールバックにおいて、最後のケースの後に出力されていた無条件ジャンプを省略する最適化です。最後のケースがそのままスイッチ終端へフォールスルーするため、動作を変えずにコードサイズが小さくなります。それ以前のケースは引き続きスイッチ終端へのジャンプを保持します。
@jkotas ・ GitHub ・ area-Infrastructure-mono
Mono上でSIGSEGV(セグメンテーション違反)が発生するため、回帰テスト Runtime_133581 をMonoでは無効化するPRです。同様の症状で失敗するテストが複数あるとのことです。ランタイム/コンパイラ/ライブラリ本体の実装変更ではなく、テストの実行条件のみを変更するもので、公開APIへの影響はありません。
@tannergooding ・ GitHub ・ area-System.Numerics
decimal から Half / BFloat16 への変換で、ターゲット形式の中間点(midpoint)のわずかに片側にある値が、一度 double に丸められると中間点そのものになり、誤った隣接値に丸められる問題を修正します。有効な場合はターゲット形式向けのファストパスを使い、それ以外の値には厳密なターゲット精度でのフォールバックを用います。あわせて Half の MinExponentRoundToEven の境界値を -21 から -22 に修正しており、これにより影響を受けていた Half のパース時のタイ(tie)処理も修正されます。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
NativeAOT の Wasm ターゲットで、例外を投げずに finally を正常完了させる経路を有効化する変更です。JIT の EH 句から funclet を分類し、その結果(finally/fault の区別と句の順序)を NativeAOT と ReadyToRun の両メソッドノードに保持します。これにより、シリアライズ済み EH レコードをデコードする必要がなくなります。
また「親メソッド + funclet 序数」による参照を、名前付き funclet シンボルへの再配置(relocation)に変換します。これによりリンカーがテーブルスロットを独立して割り当てられます。EH 情報と依存関係は維持されます。
作成者による再現手順では、通常/ジェネリックの関数ポインタ、ジェネリック辞書ルックアップ、finally を通る正常完了を試し、Hi が2行出力され終了コード 0 になることが期待結果です。
try
{
Call(&Print);
}
finally
{
Call(&PrintGeneric<string>);
}
続きを読む
@ViveliDuCh ・ GitHub ・ NO-SQUASH Servicing-approved area-System.Security
release/9.0-staging ブランチを release/9.0 にマージする手動マージPRです。作成者・Copilotによる概要の記載はなく、詳細な意図は提供情報からは不明です。変更ファイルから、依存関係バージョンの更新、パイプライン設定、CoreCLRのamd64アセンブリ、暗号化関連のSafeHandle、テストの変更が含まれていることが確認できます。
@ViveliDuCh ・ GitHub ・ NO-SQUASH Servicing-approved area-codeflow
release/8.0-staging ブランチを release/8.0 へ手動でマージするPull Requestです。作成者・Copilotによる概要の記載はなく、変更ファイル一覧から確認できる範囲で、依存関係・ビルド基盤の更新、CoreCLRのVM(仮想スタブ)修正、Cryptography関連の修正とテスト追加、パイプライン定義の変更が含まれていることが分かります。
@Empiree ・ GitHub ・ area-System.Reflection.Metadata community-contribution
MetadataReader がメタデータルートからストリーム数を読み取る際、ReadInt16(符号付き)を使用していたため、0x8000 以上のカウントが負の値になり、配列確保時に OverflowException がスローされる問題を修正します。ECMA-335 (II.24.2.1) ではストリーム数は2バイトの符号なし値であり、CoreCLR のネイティブリーダーも USHORT として読み込んでいます。修正により ReadUInt16 を使用するようになり、不正なヘッダーに対してはコンストラクターのドキュメントどおり BadImageFormatException が発生します。
続きを読む
@thomhurst ・ GitHub ・ area-System.Diagnostics.Process community-contribution
Unix 上の Process.Kill(entireProcessTree: true) が、macOS で意図しないプロセス(GitHub ホステッドランナーの Runner.Listener / Runner.Worker 等)に SIGHUP/SIGCONT/SIGTERM を発生させる問題(#131944)の修正です。
従来は、ツリー全体に SIGSTOP を送った後、深さ優先の先行順(親が先)で SIGKILL を送っていました。親が先に死ぬと、停止中の子が launchd に reparent されます。その子が終了する際、XNU の fixjobc() が pg_jobc をデクリメントしてプロセスグループが誤って orphaned と判定され、orphanpg() が停止中のメンバーを検出して同一プロセスグループ全体に SIGHUP と SIGCONT を送っていました。
修正では、収集済みのリストを逆順に走査し、子孫を祖先より先に SIGKILL します。SIGKILL は停止状態を即座に解除するため、祖先が終了して子が reparent される時点で停止中のプロセスが残りません。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Http
HTTP証明書検証テストが外部の badssl.com に依存していたため、ループバックサーバーと既存テストヘルパーで生成した証明書に置き換えるPRです。外部の可用性や証明書設定に左右されなくなります。製品コードおよび公開APIの変更はありません(テストのみ)。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
小さな型(byte/short など)への STORE_LCL_VAR / STORE_LCL_FLD は、ソース値を暗黙的に切り詰めます。しかし、BITCAST が contained 化されていると、コード生成がソース側のレジスタ(例: float)から元の幅のままストアしてしまい、隣接フィールドを上書きする問題がありました。本PRは、小さなローカルストアの配下では BITCAST を contained にしないようにして、この問題を修正します。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
戻り値バッファ経由で値を返す呼び出し結果を、自身の戻り値型がマルチレジスタ構造体(例: arm64のHFA)であるメソッドから返す場合、impFixupStructReturnType が作成する一時変数に lvIsMultiRegRet が設定されず、Lowering でアサートが発生する問題を修正します。該当の一時変数がマルチレジスタ戻り値の既存処理にフォールスルーするようにしました。
@asad24-dev ・ GitHub ・ area-System.Net.Quic community-contribution
QuicStream の送信バッファがリークする問題の修正です(#135583)。MsQuicBuffers が struct であるため、_sendBuffers を MsQuicContextSafeHandle.Disposable に代入した時点で、ハンドル側にはボックス化されたコピーが渡されていました。このコピーは最初の送信でネイティブの QUIC_BUFFER 配列が確保される前のものです。そのためハンドル解放時には、実際のバッファを保持するインスタンスではなく、古いコピーが Dispose されていました。
MsQuicBuffers を sealed class に変更し、ストリームとセーフハンドルが同じバッファ所有者を共有するようにしました。
続きを読む
@Copilot ・ GitHub ・ area-Infrastructure
macOS ARM64 の checked ビルド(GC/JIT ストレス)で test89834 が SIGBUS で終了する問題(100 を期待しているところ 138 が返る)の修正です。原因は CORINFO_HELP_BULK_WRITEBARRIER_SMALL ヘルパーにあるとされています。このヘルパーは non-GC として分類されていますが、最初の呼び出しが prestub に入り、GC を引き起こす可能性があり、GC hole となっていました。
続きを読む
@eiriktsarpalis ・ GitHub ・ area-System.Text.Json
System.Text.Json のストリーミングデシリアライズで、nullable な構造体内の null メンバーの直後にバッファ境界が来ると、有効なJSONに対して JsonException が発生する問題の修正です。
原因は、ReadStack.Push() が最深部の中断されたフレームを復元する際に IsContinuation をクリアすることです。これにより NullableConverter<T> がメンバートークンを「null の nullable 値」として誤って扱っていました。修正では、その高速パスに入る条件として ObjectState.None を必須にしています。
続きを読む
@pcshrosbree ・ GitHub ・ community-contribution area-CodeGen-Interpreter-coreclr
インタプリタ(src/coreclr/vm/interpexec.cpp)で、マネージドヘルパー呼び出しの前に「次の命令の ip」を pFrame->ip に記録するよう修正したPRです。
従来、INTOP_CALL_HELPER_* と INTOP_UNBOX_ANY[_GENERIC] のネイティブヘルパー呼び出し経路では、ヘルパー実行中も pFrame->ip が命令の先頭を指したままでした。ヘルパーがマネージドコードで例外を投げると、インタプリタフレームは faulting としてマークされず、SfiInitWorker/SfiNextWorker が ip をリターンアドレスとみなして STACKWALK_CONTROLPC_ADJUST_OFFSET を引きます。その結果、ヘルパー呼び出しが try 領域の最初の命令(.cctor を持つ型の静的フィールドアクセスでの静的ベースヘルパーなど)の場合、補正後の ip が領域の手前に落ち、ハンドラーが実行されませんでした。
INTOP_CALL や IL ターゲット側の経路は既に次命令の ip を記録していたため、ネイティブヘルパー経路も同様に ip を進めてからヘルパーを呼ぶようにしています。
続きを読む
@elinor-fung ・ GitHub ・ area-Host
ネイティブホスティングのカスタムコンポーネントホスティングAPIに、ロードコンテキストを指定できる機能を追加します。coreclr_load_context をコンポーネントホスティングAPIへ渡せるようになり、同一の識別子を持つコンポーネントは同じロードコンテキストを共有します。設計ドキュメント native-hosting-load-context.md のカスタムコンポーネントホスティング部分の実装であり、#133570 のフォローアップです。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのmorphフェーズで、参照型配列のストアヘルパー呼び出しを直接ストアに展開する際、副作用を持つオペランドを「配列 → インデックス → 値」の順に評価してから、配列のnullチェックと境界チェックを導入するよう修正します。importerでのspillは、ヘルパー呼び出しのままの段階では forward substitution により取り消され得るため、この順序保証を変換処理そのものに組み込んでいます。volatile読み取りのような「順序付けのみ」の副作用も対象に含めています(変換処理と、既存のインライン配列ストア用importer spillの両方)。
続きを読む
@lewing ・ GitHub ・ area-Diagnostics-coreclr
ポータブルエントリポイントを使うターゲット(CoreCLR WebAssembly など)向けに、cDAC の IDebugInfo.GetMethodVarInfo の2つの問題を修正します。
codeOffset を、メソッドのエントリポイント(ICodeVersions.GetNativeCode)ではなく、IExecutionManager.GetDiagnosticCodeStartFromEntryPoint(#134827)でコード開始位置にマッピングした値からの相対で計算するようにしました。このメソッドは、インタプリタメソッドならインタプリタのバイトコード、ポータブルエントリポイントなら R2R の仮想 IP を返し、それ以外はアドレスをそのまま返します。
IsVersionable が ReJIT コントラクトを必須としていたため、PROFILING_SUPPORTED が無効な wasm では GetMethodVarInfo が ContractMissingException を投げていました。コントラクトが存在しない場合は ReJIT 対象外として扱うよう、TryGetContract を使うように変更しました。
続きを読む
@rzikm ・ GitHub ・ area-System.IO.Compression breaking-change needs-breaking-change-doc-created
ZstandardDictionary.Train の戻り値を、品質3で準備済みの ZstandardDictionary から、呼び出し側が所有する辞書の生バイト列(byte[])に変更します。従来は、準備済み辞書がエンコーダーの品質設定を上書きするため、別の品質を使いたい場合は Data を取り出して再度辞書を準備する必要がありました。この変更により、オフラインでのトレーニング/永続化と、品質ごとの辞書準備が分離されます。
byte[] data = ZstandardDictionary.Train(samples, sampleLengths, maxDictionarySize);
using ZstandardDictionary dictionary = ZstandardDictionary.Create(data, quality);
トレーニング時の検証、小サンプルに対する安全ガード、プール済みバッファのクリーンアップは変更されていません。準備済み辞書がエンコーダー品質より優先される点も従来どおりです。
続きを読む
@Copilot ・ GitHub ・ area-Infrastructure
v.X = Helper(ref v) のようなSIMDベクターの部分書き込み(partial store)において、モーフィング時にRHSより前にベクター全体が読み取られ、その後 WithElement でRHSの結果を反映することで、呼び出し先が他のフィールドに書き込んだ内容が上書きされてしまう問題(#135392)を修正します。RHSに永続的な副作用や順序依存の副作用がある場合は、WithElement への変換を行わず直接の部分書き込みを維持します。
続きを読む
@vitek-karas ・ GitHub ・ area-Infrastructure
CI Outer-Loop Failure Scanner(ワークフロー)が、Bashのコマンド許可リストに read がなかったため実行できなかった問題に対応するPRです。スキャナーが実際に使用していたシェル組み込みコマンド(read と :)を許可し、無操作時の監視(inactivity watchdog)のタイムアウトを2分から10分へ延長します。ランタイム/ライブラリのコードやAPIへの変更はなく、CIワークフロー設定のみの変更です。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
WASI向けNative AOTでの「hello world」を成立させるため、Wasmオブジェクトライタが wasm-ld でリンク可能なリロケータブルオブジェクトを出力できるようにする変更です。linking(symbol-table / segment-info)メタデータ、CODEおよびマージ済みDATAのrelocationセクションを出力し、マネージドメソッド本体とコンパイラデータをWASI libcとリンクできるようにしています。
検証では、ランタイムなし・アロケーションなしの直接呼び出しプログラムが対象で、puts へのP/Invokeで "Hi" を出力し、wasmtime 上で正常終了(exit 0)することを確認しています。サンプルはリポジトリ内のrepro(zerosharp.cs)として提示されています。
[DllImport("*"), SuppressGCTransition]
static extern unsafe int puts(byte* str);
[UnmanagedCallersOnly(EntryPoint = "__main_argc_argv")]
static int NativeMain(int argc, byte** argv)
{
Main();
return 0;
}
static unsafe void Main()
{
int abc = 'H' | 'i' << 8;
puts((byte*)&abc);
}
続きを読む
@jkotas ・ GitHub ・ area-VM-coreclr
新しいprecode設計により、jump stubの確保を必ず成功させる必要がなくなったため、CodeHeapReserveForJumpStubs(jump stub用の予約領域)を削除するPRです。適切なアドレス範囲にjump stub用のメモリを確保できないごく稀なケースでは、確保失敗を NULL として伝播し、確保をリトライする方式に変更されています。
@caraioniurie47 ・ GitHub ・ area-System.Reflection community-contribution
MetadataLoadContext において、アセンブリをロードしてもその名前は束縛されず、名前は MetadataAssemblyResolver が返したアセンブリにのみ束縛される(dotnet/corefx#33734 以降の挙動)という実際の動作に合わせて、ドキュメントコメントとエラーメッセージを修正する変更です。ロード処理自体のロジックは変更していません。
@prozolic ・ GitHub ・ linkable-framework community-contribution area-Tools-ILLink
ILLink.RoslynAnalyzer と ILLink.Shared 内の ImmutableArray<T>.Builder の利用箇所で、ToImmutableArray の代わりに MoveToImmutable を呼び出すように変更するPRです。PR #134426 のフォローアップで、ILLink および ILCompiler.Compiler に適用された変更を ILLink.RoslynAnalyzer と ILLink.Shared にも反映しています。
続きを読む
@BrzVlad ・ GitHub ・ area-System.Runtime
RuntimeFeature.IsDynamicCodeCompiled のテスト(DynamicCode_Jit)が、インタープリターが有効な環境で誤って失敗する問題を修正するPRです。インタープリターが有効な場合に「動的コードがコンパイルされている(IsDynamicCodeCompiled == true)」と仮定しないよう、テストの前提を変更しています。
背景として、Apple/WASMターゲットを模倣するため --dynamiccodecompiled false を明示的に指定してビルドする構成が存在します。このテストは以前インタープリター上で無効化されていましたが、最近 #134762 で再び有効化されたため、上記構成で問題が顕在化したとのことです。
続きを読む
@lewing ・ GitHub ・ area-Build-mono
CMakeはビルドディレクトリの初回configure時にのみコンパイラを検出するため、その後にツールチェーンファイル・CC/CXX・emcmakeなどを変更しても反映されませんでした。WASI SDKやemsdkがバージョン別のツールキャッシュディレクトリに移行したことで、SDK更新後も既存のローカルビルドディレクトリが古いコンパイラを使い続け、#134992 の後に undefined symbol: __wasilibc_descriptor_deallocate といったリンクエラーが発生していました(CIは毎回新規configureのため影響なし)。
本PRでは、コンパイラ選択に関わる入力を <build dir>/cmake_compiler_inputs.txt に記録し、前回と差異があれば clean ターゲットを実行した上で --fresh 付きでconfigureし直すようにしました。
続きを読む
@Copilot ・ GitHub ・ area-ExceptionHandling-coreclr
承認済みの診断用API ExceptionHandling.GetCurrentException() を追加し、スタック上の例外インスタンス(処理中の例外およびcatch中の例外)へアクセスできるようにします。CoreCLR / NativeAOT で実装され、Mono では PlatformNotSupportedException をスローします。Fixes #89724。
@pkuyo ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerify において、ネストされた例外フィルターのエントリースタック初期化が誤っており、正しいILに対して誤検出(false verification errors)が発生していた問題(#134711)を修正します。あわせて、例外ハンドリング(EH)領域の境界・重複・ネスト・節の順序・フィルターの終端などの検証を追加し、メソッドエントリがハンドラーやフィルター内にあるILを拒否するようになります。回帰テストも追加されています。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Http
HTTP/2 の TimeInQueue_RecordedForNewConnectionsOnly テストの不安定さ(flaky)を解消するための、テストのみの変更です。プール側は、最初の待機者へシグナルを送った後に接続を公開する場合があります。そのため、最初のレスポンス完了後すぐに接続が再利用可能になるとは限らず、後続の逐次リクエストが同じ接続上で正当にキュー待ちとなり、計測値が2〜3件になることがありました。キュー時間は「接続確立」だけでなく「利用可能な接続を待つ時間」を測るため、これは仕様上起こり得る挙動です。このPRでは、接続がプールに公開されるのを待ってから再利用を検証するようにしています。プロダクションコード、メトリクスのタグ、HTTP/1.1 / HTTP/3 の扱いは変更されません。
続きを読む
@pkuyo ・ GitHub ・ area-Tools-ILVerification
ILVerifyにおけるインターフェース MethodImpl ボディの検証を修正するPRです(Fixes #133500)。
インターフェース解決の前に、非virtualなインスタンス MethodImpl ボディを拒否するようにしました。解決結果がvirtualな基底メソッドを返すことで、不正なマッピングが隠れてしまう問題への対処です。
staticインターフェースメソッドについては静的リゾルバを使用し、有効な非virtual実装を許容します。
回帰テストを追加しています。
続きを読む
@DeepakRajendrakumaran ・ GitHub ・ area-CodeGen-coreclr community-contribution apx
AMD64上のvirtual call stubに、Intel APX(Advanced Performance Extensions)のJMPABS命令(D5 00 A1 + 8バイトアドレス)のサポートを追加するPRです。従来の mov rax, imm64; jmp rax による64ビット絶対ジャンプを JMPABS に置き換え、スタブサイズ縮小と命令フェッチ効率の改善を狙っています。
実行時に IsJmpAbsAvailable()(InstructionSet_APX の有無)で判定し、APX非対応環境では従来のエンコードにフォールバックします。
なお、当初含まれていたJITエミッタ側の変更は、レビューフィードバックにより取り下げられています。
続きを読む
2026年10月12日 (46 PRs) うち Bot 25 件 この日のページ →
@PaulusParssinen ・ GitHub ・ area-CodeGen-coreclr community-contribution
JITの ReadUtf8 展開処理において、不変データ(immutable data)の抽出ロジックを GetImmutableDataFromAddress に統合して簡素化するPRです。ReadUtf8 展開内の「RVAバッキングされた入力」に関する既存のTODO風コメントにも対応しています。作成者は UTF8EncodingSealed.GetByteCount を定数/不変入力に対してintrinsic化する検討(#102246)の過程で、assertionpropsで定数入力長の畳み込みに使われている GetImmutableDataFromAddress に気づき、これを流用したとのことです。
続きを読む
@akoeplinger ・ GitHub ・ area-Infrastructure
ブラウザ向けライブラリテストの publish 時に、プロジェクト参照由来の PDB とランタイムパック由来の PDB が重複して残り、NETSDK1152 が発生する問題の修正です。publish 対象として選択された DLL に対応するシンボルのみを使用するようにしています。
作成者によれば、net12 への retarget で顕在化したとのことです。bootstrap SDK に net12 の pruning データがないため、推移的なライブラリのプロジェクト参照が残るのに対し、net11 では pruning により除去されます。修正自体は TFM に依存せず、重複入力の発生経路にかかわらず publish シンボルを選択済み DLL に合わせる内容です。
続きを読む
@tannergooding ・ GitHub ・ Servicing-approved area-System.Numerics
Number.Dragon4 が2の累乗の厳密値を判定する際、1U << TNumber.DenormalMantissaBits の 1U が32ビットであるため、double(仮数部52ビット)ではシフト量がマスクされ、マージン判定が誤っていました。これにより 2^-25 や 2^-958 などで最短ラウンドトリップ書式化の桁数が不足していました。リテラルを 1UL に拡げて修正しています。.NET 10 でのリグレッションの release/10.0 向けバックポートです(main PR: #131131 )。
続きを読む
@pcshrosbree ・ GitHub ・ area-System.Diagnostics.Process community-contribution
ProcessWaitingTests.WaitChain / WaitAsyncChain は4段の RemoteExecutor プロセスチェーンを起動しますが、全階層が同一の WaitInMS で待機していました。ルートの待機は4プロセス分の起動・処理・終了を含むため、葉と同じ予算では不足し、x86 Checked レーンで約30秒のタイムアウトによる失敗が発生していました(#118977)。本PRでは、各階層の待機時間を「その下にあるプロセス数」に比例させるよう変更します(葉 1×、2×、3×、ルート 4×)。テストコードのみの変更で、製品コードは変更されていません。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JIT において、リロケーションが必要なハンドル(relocatable handle)を数値範囲・符号の推論から除外する修正です。#135484 で VN(Value Numbering)によるハンドル比較の畳み込みは止められましたが、ARM32 ではアサーション伝播(assertion propagation)中に、コンパイル時のハンドル用プレースホルダー値を使って比較が畳み込まれてしまう問題が残っていました。本 PR はこの経路を塞ぎます(Fixes #135604)。
続きを読む
@caraioniurie47 ・ GitHub ・ area-System.Globalization community-contribution
Unix系ターゲット(Android/Apple/Browser/WASI以外)で CMAKE_ICU_DIR を指定してビルドした際、System.Globalization.Native の configure チェック(HAVE_UDAT_STANDALONE_SHORTER_WEEKDAYS、HAVE_UCOL_CLONE)が CMAKE_ICU_DIR 配下のICUヘッダーを参照せずにコンパイルされる問題を修正します。
従来は ${CMAKE_ICU_DIR}/include が include(configure.cmake) の後でしか追加されなかったため、次の問題が生じていました。
システムにICUヘッダーがない場合、両チェックが "file not found" で失敗し、config.h に両方とも0が設定される(ビルド自体は成功する)
システムICUヘッダーがある場合、CMAKE_ICU_DIR ではなくシステム側のヘッダーでチェックされる
HAVE_UCOL_CLONE が0かつ STATIC_ICU 定義時(LOCAL_BUILD 構成)、pal_collation.c が ICU 78.3 で非推奨の ucol_safeClone を呼び、-Werror でビルドが失敗する
HAVE_UDAT_STANDALONE_SHORTER_WEEKDAYS が0の場合、pal_calendarData.c は super-short の曜日名に UDAT_STANDALONE_NARROW_WEEKDAYS を使用する
続きを読む
@caraioniurie47 ・ GitHub ・ area-System.Net community-contribution
Linuxで /etc ディレクトリが存在しない場合に NetworkInterface.GetAllNetworkInterfaces() が DirectoryNotFoundException をスローする問題を修正します。/etc/resolv.conf の読み取りを共通ヘルパー StringParsingHelpers.ReadResolvConfFile に集約し、ファイル未存在・ディレクトリ未存在・アクセス拒否のいずれの場合も null を返す(DNS情報なしとして扱う)ようにしました。公開APIの変更はありません。
続きを読む
@janvorli ・ GitHub ・ Servicing-approved area-VM-coreclr
release/10.0 向けの #135290 のバックポート。Unix 上で、ネイティブランタイムコードからスローされたソフトウェアマネージド例外に対して DispatchManagedException が実行されると、動的に確保された CONTEXT と EXCEPTION_RECORD が解放されずリークする問題を修正します(amd64 で約 3400 バイト)。マネージド例外処理側が、動的確保されたコンテキスト/例外レコードの所有権を引き継いでいないことが原因です。.NET 9 の新しい例外処理(#88034)で混入したリグレッションで、顧客からの報告 (#135234 ) に基づく修正です。
修正内容は、ソフトウェア例外処理におけるコンテキストの所有権の扱いを、従来からあるハードウェア例外処理と同じ方式に揃えるものです。
続きを読む
@janvorli ・ GitHub ・ Servicing-approved area-VM-coreclr
Unix上で、ネイティブランタイムコードからスローされるソフトウェアマネージド例外(DispatchManagedException経路)において、動的に確保された CONTEXT と EXCEPTION_RECORD が解放されず、メモリリークする問題の修正です。マネージド例外処理側が、動的確保された context / exception record の所有権を引き取っていなかったことが原因です。これは #135290 の release/11.0 へのバックポートです。
続きを読む
@pcshrosbree ・ GitHub ・ community-contribution area-Diagnostics-cdac
cDAC の Loader_1.GetModuleHandles において、IncludeAvailableToProfilers フラグの判定が反転していた不具合を修正します。ネイティブの AppDomain::AssemblyIterator::Next_Unlocked は、アセンブリが profiler 通知済みで、かつ呼び出し側が kIncludeAvailableToProfilers を渡した場合のみ loaded/loading チェックをスキップします。cDAC は !iterationFlags.HasFlag(...) と逆の条件を使っていました。
// 修正の趣旨(概念)
// 誤: !iterationFlags.HasFlag(AssemblyIterationFlags.IncludeAvailableToProfilers)
// 正: iterationFlags.HasFlag(AssemblyIterationFlags.IncludeAvailableToProfilers)
続きを読む
@lewing ・ GitHub ・ arch-wasm area-ReadyToRun
FEATURE_64BIT_ALIGNMENT ターゲット(ARM32 と wasm)で、MethodTableBuilder::HandleAutoLayout が Align8 候補の auto-layout 値型のアラインメントを、フィールドがそれ以上を要求する場合でも常に 8 に固定していた問題を修正します。wasm では Int128/UInt128、Decimal128、Vector128<T> が 16 を要求するため、ランタイムは 8、crossgen2 は 16 と食い違っていました。
修正後は max(8, 最大フィールドアラインメント) を使用します(GCポインタを含む場合は従来どおり 8)。これは crossgen2 の MetadataFieldLayoutAlgorithm.ComputeAutoFieldLayout と同じ規則です。構造体内のフィールドオフセットは変わらず、構造体自身のアラインメント(末尾パディングや他の型のフィールドとして配置される位置)のみが変わります。ARM32 では 8 を超えるフィールドがないため挙動は変わりません。
続きを読む
@rzikm ・ GitHub ・ Servicing-approved area-System.Formats.Tar
GNU tar形式では int.MaxValue より大きい UID/GID が表現され得ますが、System.Formats.Tar でそのようなアーカイブを処理すると OverflowException がスローされていました。本PRは release/10.0 へのバックポートで、そのような値を読み込めるようにし、書き込み時もラウンドトリップできるようにします。main ブランチの修正 #134850 に対応します。
PR記載によると、現在知られているUNIXプラットフォームでは UID/GID は32ビット値として定義されているため、オーバーフロー時に負の数へ折り返すことを許容することで、有効なユースケースがラウンドトリップ可能になるとのことです。
続きを読む
@MichalStrehovsky ・ GitHub ・ arch-wasm area-CodeGen-coreclr
Native AOT/WASM における fat call(fat function pointer を介した呼び出し)の修正です。RyuJIT 側の変更のみで対応でき、コンパイラ/CoreLib 側には CoreRT リポジトリの WASM プロトタイプ由来の実装がすでに残っているため追加変更は不要とのことです。
作成者は、#135414 の reprozero.cs に fat call を追加して、fat call が行えることを確認したと説明しています。
続きを読む
@pcshrosbree ・ GitHub ・ community-contribution area-Diagnostics-cdac
cDAC(data contract)に関するドキュメントとREADMEの記述が現行のソースコードと食い違っていた箇所を修正するPRです。各項目は現行ソースと照合して確認されたと記載されています。コードの変更はなく、ドキュメントのみの修正です。
@wfurt ・ GitHub ・ area-System.Net.Sockets
SocketAsyncEventArgsTest.Connect_Parallel_FailsOver テストの失敗時診断情報を強化するPRです。#134107 で追跡されている断続的な失敗について、同期失敗・非同期失敗・IPv4-mapped IPv6 の挙動を区別できるようにすることが目的です。成功時のテスト動作は変更しません。
@Ruihan-Yin ・ GitHub ・ area-CodeGen-coreclr community-contribution
x64/x86 JITのlowering(lowerxarch.cpp)で、Insert(v, CreateScalarUnsafe(v2.GetElement(n)), imm) を単一の insertps(count_s でレーンnを選択)に書き換える最適化(#130422)が機能しなくなっていた問題の修正です。
#130444 以降、ユーザーが別のHW intrinsicである浮動小数点の CreateScalarUnsafe ノードが削除されるようになりました。オペランドはユーザーより先にlowerされるため、Insertのlowering時点ではラッパーが常に消えており、op2が CreateScalarUnsafe であることを前提とした条件が成立しませんでした。その結果、insertps の前に冗長な movshdup / unpckhps / shufps が残っていました。
本PRでは、CreateScalarUnsafe を介さない「素の要素抽出」もop2として認識するようにして、このfoldを復活させています。
続きを読む
@AaronRobinsonMSFT ・ GitHub ・ Servicing-approved area-ReadyToRun
release/10.0 へのバックポートです(main の #134359 が元)。Composite ReadyToRun では、別アセンブリを有効化(activation)する呼び出しがインライン化で消え、そのモジュールの module initializer が実行されない場合があります。この修正で、クロスモジュールインライン時にも activation の依存関係が保持されるようになります。
報告されたケースでは、module initializer 内の UnsafeAccessor による書き込みが観測されず、private static フィールドが未設定のままになります。.NET 10 でも再現することが元の報告で確認されており、リグレッションではありません。
続きを読む
@AaronRobinsonMSFT ・ GitHub ・ Servicing-approved area-ReadyToRun
Composite ReadyToRun(R2R)でクロスモジュールのインライン化により、他アセンブリをアクティベートする呼び出しが消えてしまい、そのモジュールのモジュール初期化子が実行されない問題の修正を、main の #134359 から release/11.0 へバックポートするものです。
具体的には以下の3点を行っています。
クロスモジュールのインライン化時に、アクティベーション依存関係を保持する
バージョンバブル外にあるグローバルモジュール型の安定トークンを許可する
RVA静的フィールドを解決する前に、宣言元モジュールをアクティベートする
報告されたケースでは、モジュール初期化子内で UnsafeAccessor を使って行った書き込みが観測されず、private static フィールドが未設定のままになっていました。.NET 10 と .NET 11 RC1 の両方で再現し、リグレッションではありません。
続きを読む
@MuhammadBilal64 ・ GitHub ・ area-System.Formats.Cbor community-contribution
System.Formats.Cbor の CborReader において、AllowMultipleRootLevelValues を有効にしたルートレベルのシーケンスが「後続のデータ項目を持たないタグ」で終わる場合に、従来は Finished を返していましたが、CborContentException をスローするように変更します。単一バッファのリーダーと、インクリメンタル(SlideData)のリーダーの両方に適用され、等価な状態では同じ例外型が発生するようになります。
続きを読む
@Copilot ・ GitHub ・ area-System.Linq
AsyncEnumerable の ThenBy / ThenByDescending において、連鎖したソーターのキー計算タスクが await されず破棄されていた問題の修正です。セレクターが非同期に中断(suspend)すると、未初期化のキーを読んだままソートされる可能性があり、またセレクターの例外が無視される場合がありました。修正では、後続ソーターのキー計算を await してからソートするようにしています。
if (_next is not null)
{
await _next.ComputeKeysAsync(elements, count, cancellationToken);
}
続きを読む
@Copilot ・ GitHub ・ Servicing-approved area-System.IO
SystemNative_FSync(pal_io.c)における演算子優先順位のバグを修正し、Unix上で fsync/fcntl(fd, F_FULLFSYNC) のエラーが無視されていた問題を解消するバックポート(main への #124725 を release/10.0 へ)です。このバグにより、SMBネットワーク共有上でファイルの破損・切り捨てが発生し得ました。修正後は FileStream.Flush(flushToDisk: true) が ENOSPC や EIO などのストレージエラーを例外として伝播します。
続きを読む
2026年10月11日 (4 PRs) この日のページ →
@bartonjs ・ GitHub ・ Servicing-approved area-System.Net.Quic
release/10.0 ブランチのビルドが NuGet の脆弱性警告(NU1904、Warning As Error)で失敗していたため、MsQuic のパッケージバージョンを 2.5.10 から 2.5.11 に更新するバックポートです(#135548 の手動バックポート)。
リビジョンのみのバージョンアップで、リスクは低いとされています。
@MihaZupan ・ GitHub ・ area-System.Net.Security
#133606 で追加された Kerberos PAC パーサー向けのファジング基盤を簡素化するPRです。PAC パーサーを DotnetFuzzing に直接リンクし、別途用意されていたヘルパープロジェクトを削除しました。あわせて、ハーネスの起動コードをインストルメントせずにパーサー部分のみを対象にするため、型名プレフィックスによるフィルタリングを追加しています。
@am11 ・ GitHub ・ community-contribution area-NativeAOT-coreclr
NativeAOTのUnix向けREGDISPLAYシムを、縮小版のllvm-libunwindパッチに合わせて調整するPRです。setRegisterはIP/SPの値のみを扱い、レジスタの保存場所はsetRegisterLocation経由で渡される方式になります。あわせて以下の対応が行われています。
stepWithDwarfにはCFI行比較をパッチする代わりに pc + 1 を渡す
upstreamのUnwindCursorコンストラクタを使用する
テンプレート化されたfindUnwindSectionsを呼び出す
続きを読む
@DanSamek ・ GitHub ・ area-System.Runtime community-contribution
Array クラスに、指定した値で初期化された配列を作成する新しい公開API Array.Create<T>(デフォルト値指定版)を追加するPRです。Issue #121477 を修正します。これまで new T[n] の後に Array.Fill や手動のループで初期化していた処理を、この新APIで置き換えられるようになります。あわせて、リポジトリ内の既存コード(主にテスト)で同様の初期化パターンをこのAPIに置き換えています。
※提供された情報には新APIの正確なシグネチャは含まれていないため、記載していません。
続きを読む
2026年10月10日 (12 PRs) うち Bot 2 件 この日のページ →
@Copilot ・ GitHub ・ area-Infrastructure
release/10.0 のビルドをブロックしている NuGet 監査エラー(NU1904)を解消するため、共有の MsQuic バージョンを 2.5.10 から修正版の 2.5.11 に更新します。MsQuic.OpenSSL 2.5.10 には、致命的な証明書検証の脆弱性 GHSA-w5f4-fx9m-m4q7 が報告されています。この脆弱性により、OpenSSL バックエンドでは TLS のホスト名検証が不適切となり、サーバーのなりすましが可能になります。Schannel は影響を受けません。
続きを読む
@vcsjones ・ GitHub ・ Servicing-approved area-System.Security
release/10.0 に OpenSSL 4.0 対応をバックポートするPRです。.NET 11 の #122744、#125470、#125687 を概念的にバックポートしたものですが、.NET 11 で OpenSSL 1.0.x / 1.1.0 のサポートが削除されたため、そのままでは適用できず再実装されています。変更は最小限に絞られています。
背景として、OpenSSL 4.0 のみを搭載するシステム(Ubuntu 26.10、Fedora 45 など、搭載予定のディストリビューション)では、これらの変更がないと .NET 10 が動作しません。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのLowering段階で、GC参照を含む構造体のコピーを個別のストアに分解する際、ローカル変数のソースを LCL_FLD ノード経由で読み取っていました。LCL_FLD のオフセットは16ビットに制限されているため、64 KiBを超える構造体ではオフセットが折り返され、誤ったデータを読み取って64 KiB以降のフィールドが欠落していました(Checkedビルドではアサート)。
本PRでは、ローカルのフィールドをすべて LCL_FLD としてエンコードできない場合(IsValidLclAddr が偽の場合)、ローカルのアドレスを一度取得し、そのアドレス経由で各部分をロードするよう修正しています。これは間接ソースに対して既に使われているパスと同じです。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
符号付きの int.Log2 / long.Log2 は x < 0 ? INTRINSIC(Log2, x) : lzcnt-based result としてインポートされ、フォールバック側のノードは後に例外をスローするマネージド呼び出しへ書き換えられます。しかしこのフォールバックノードは手動で GTF_CALL が設定されているだけで、OperExceptions が例外なしと報告し、副作用チェックも本物の呼び出しとしてしか扱わないため、戻り値が未使用の場合にデッドストア除去で ArgumentOutOfRangeException ごと削除されていました。本PRはこのフォールバックを「例外をスローし得る」ものとして扱うよう修正します(JIT内部の修正で、公開APIの変更はありません)。
また、フォールバックを保持するようにしたことで顕在化した fgExpandQmarkStmt の潜在バグ(then側のみのqmarkで、条件を反転しているにもかかわらず then/else の確率が逆のエッジに割り当てられ、then側が稀な場合にプロファイルデータが不整合になる)も合わせて修正しています。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITの値番号付け(Value Numbering)において、再配置可能(relocatable)なハンドルを含む符号付き大小比較の定数畳み込みを拒否するよう修正したPRです。コンパイル時のハンドルのプレースホルダは、再配置後の実行時アドレスの順序を保証しないため、符号なし比較や算術演算と同様に畳み込みを拒否します。あわせて、longからintへの VN narrowing によってハンドルVNが通常の数値定数に変換され、この拒否を回避してしまう問題も防止します。同一性に基づく等値比較/null畳み込みは従来どおり維持されます。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITの可換算術演算の再結合(reassociation)において、定数畳み込みの結果として返された定数ノードをそのまま利用するよう変更するPRです。従来は元の定数ノードに値・VN・フィールドシーケンスのみをコピーしていたため、算術演算でハンドルが通常の数値定数に変わった後も、ハンドルフラグなどの古いメタデータが残る可能性がありました。この変更により、再結合された畳み込み定数のメタデータが完全に保持されます。既存の定数畳み込みのリロケーション保護と算術最適化は維持されます。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのmorph処理で、符号付き除算の定数除数が「その型の符号付き最小値」である場合に、否定(negation)を除数側へ分配する最適化を行わないようにする修正です。最小値の否定は同じ型では表現できないため、被除数も最小値のとき、結果が -1 から 1 に変わってしまう問題(#133517)を防ぎます。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのRangeCheck(境界チェック除去)において、IsVNCheckedBound(チェック済みの境界値)が「負ではない」と暗黙に仮定していた箇所を修正するPRです。シンボリックな範囲の上限を構築する際に、境界が非負であることを要求するようにし、境界が負になり得るケースで誤って境界チェックが除去される正しさ(correctness)の問題を修正します。
@pcshrosbree ・ GitHub ・ area-ILTools-coreclr community-contribution
マネージド版ilasm(src/tools/ilasmのC#実装)が、ネイティブilasmと同様にPDBを別ファイル(<output>.pdb)へ書き出す よう変更するPRです。主な変更点は次の3点です。
-DEBUG / -PDB 指定時、PDBはイメージに埋め込まず<output>.pdbに出力します。
-DEBUGも-PDBも指定せず.lineだけを使った場合は、PDBもデバッグディレクトリも生成しません(.lineのパースと検証は継続)。
CodeViewパスは常にassembly.pdbではなく、PDBファイルのフルパスになります。-DET指定時のみファイル名(例: Min.pdb)だけを記録し、ディレクトリが違っても同一バイト列になる決定論性を確保します。
デバッグディレクトリはCodeView → PdbChecksum(PDBのid 20バイトをゼロ化したSHA-256)→(-DET時)Reproducibleの順で、ネイティブと同じ構成です。PDBがない場合は、ManagedPEBuilderが追加するReproducibleのみのディレクトリをILAssemblerPEBuilderで消去し、デバッグディレクトリを持たないイメージにします。
続きを読む
@agocke ・ GitHub ・ area-System.Threading os-macos
macOS上でx64プロセスがRosetta下で動作している場合に、Appleのプロセス全体メモリバリア(Interlocked.MemoryBarrierProcessWideの実装)の呼び出しを直列化するPRです。Rosetta下ではthread_get_register_pointer_valuesを並行して呼ぶと、変換されたx64スレッド状態の再構築中にデッドロックが発生します(単独の再現コードで5回中5回ハング)。ネイティブarm64およびIntel macOSの動作は変更されません。#133797で報告された並行バリアのハングに対応するもので、別件のraw forkとの相互作用に対するpthread_atforkハンドラは意図的に追加していません。
続きを読む
2026年10月09日 (29 PRs) うち Bot 4 件 この日のページ →
@pcshrosbree ・ GitHub ・ area-Infrastructure community-contribution
CLR_CROSS_COMPONENTS_BUILD フラグを、ユーザー指定の CMakeArgs に文字列連結する方式から、MSBuildプロパティ ClrCrossComponentsBuild=true を経由して runtime.proj が独立した -cmakeargs として渡す方式に変更します。
修正前は CMakeArgs=$(CMakeArgs) -DCLR_CROSS_COMPONENTS_BUILD=1 と連結されていたため、Windows(build-runtime.cmd)ではクォートされた値が1つのCMake引数として扱われ、-cmakeargs -DCLR_PROBE_NOOP=1 を指定すると CLR_PROBE_NOOP の値が 1 -DCLR_CROSS_COMPONENTS_BUILD=1 になり、CLR_CROSS_COMPONENTS_BUILD が定義されませんでした。Linuxでは build-commons.sh が eval で再解析するため問題は顕在化していませんでした。
続きを読む
@radekdoulik ・ GitHub ・ area-Infrastructure
Process.GetCurrentProcess() が未サポートの Browser/WASI、および WorkingSet64 が PlatformNotSupportedException を投げる iOS/tvOS で、回帰テスト test135234 をスキップするようにしました。#135290 で追加された回帰テストにより発生していた Browser/Wasm インタプリタでの失敗を修正します。
Boolean の入力パターンとネイティブのワーキングセットリーク検証は変更されていません。Desktop、MacCatalyst、Android でのテストカバレッジは維持されます。プロジェクト設定の変更もありません。
続きを読む
@pcshrosbree ・ GitHub ・ community-contribution area-Diagnostics-cdac
#135450 のフォローアップとして、cDAC(Contract Data Access Component)における entry-point から MethodDesc への解決処理に対するユニットテストを追加するPRです。vtableの各スロットは NonVirtualEntry2MethodDesc を経由して解決されますが、その非ポータブルなパスや、ValidateMethodDescPointer における temporary entry point のチェックにはテストカバレッジがありませんでした。このため、該当ロジックを壊してもテストが全て通る状態でした。本PRはテストのみの追加です。
続きを読む
@bartonjs ・ GitHub ・ Servicing-approved area-System.Security
release/8.0-staging への #130804 のバックポート。NCrypt ハンドル(SafeNCryptKeyHandle 等)の「重複所有(Duplicate ownership)」状態機械が、複数スレッドが同じキーオブジェクトを初めて同時に使用 した際のレース条件で不正な状態に入る問題を修正します。
不正な状態に入ると、ファイナライズ時に ObjectDisposedException が発生し、最悪の場合プロセスが異常終了します(CI で assert により検出された #130760 と同一の問題と報告されています)。
修正は、レースの影響を受けるコードを lock で囲むという単純なものです。最初の使用が完了した後の並列アクセスは、もともとこのレースの影響を受けません。
続きを読む
@davidwrighton ・ GitHub ・ area-VM-coreclr
専用ファイナライザースレッドが、マネージドのワーカーに入る前にEE(実行エンジン)の起動完了を待つように変更します。CoreLibの有効化は起動完了の十分な同期点ではなく、その後に共有静的変数やスレッド静的変数の基盤が初期化されます。その間にファイナライザースレッドが動作し得ます。GC.RunFinalizers はファイナライズ対象を確認する前に Thread.CurrentThread にアクセスするため、起動途中で競合が発生し得ました。
修正後は、HasStarted() とバックグラウンドスレッド登録の後に、プリエンプティブGCモードで EnsureEEStarted() を呼び出します。EE起動はスタートアップロックを保持したままファイナライザースレッドを作成するため、この呼び出しは新たなロードを開始せず、既存の初期化の完了を待ちます。起動が利用不可または失敗している場合は、HRESULTをログに記録し、マネージド実行をスキップして、ファイナライザーのシャットダウン完了を通知します。
続きを読む
@rcj1 ・ GitHub ・ area-Diagnostics-cdac
cDAC(Contract Data Descriptor Reader)におけるエントリポイントから MethodDesc を解決する処理を統合するリファクタリングです。RuntimeTypeSystem コントラクトが ExecutionManager.NonVirtualEntry2MethodDesc を経由して MethodDesc を解決するよう変更し、portable 専用だった PrecodeStubs コントラクト(PrecodeStubs_2)を削除しています。
続きを読む
@davidwrighton ・ GitHub ・ area-VM-coreclr
R2R(ReadyToRun)コンポジットのテスト経路で、CrstNativeImageEagerFixups を保持したまま CrstAppDomainCache を取得するケースがありました。この依存関係が CrstTypes.def に記述されていなかったため、Checked ビルドで CRST(Critical Section)のレベル違反が報告されていました。
CrstNativeImageEagerFixups を CrstAppDomainCache および CrstGlobalStrLiteralMap より前に取得されるロックとして宣言し、crsttypes_generated.h を再生成することで、ロック順序の不整合を解消しています。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのoptOptimizeBoolsにおける定数範囲テストの畳み込み(range folding)を、符号なし(unsigned)比較にも拡張するPRです。これにより、n is >= '0' and <= '9' のようなパターンが、2回の比較・分岐ではなく「減算+1回の比較」に変換されます。Closes #135418。
bool Pattern() => n is >= '0' and <= '9';
x64のコード生成は以下のように変化します(作成者提示)。
- mov ecx, dword ptr [rcx+0x08]
- cmp ecx, 48
- jae SHORT G_M53568_IG05
- xor eax, eax
- ret
-G_M53568_IG05:
- cmp ecx, 57
+ mov eax, dword ptr [rcx+0x08]
+ sub eax, 48
+ cmp eax, 9
setbe al
movzx rax, al
ret
-; Total bytes of code: 21
+; Total bytes of code: 16
続きを読む
@rzikm ・ GitHub ・ area-System.Net
SmtpClient に TLS 設定用の SslOptions プロパティを再導入する変更です。#134919 の機能を、CI を大きく壊したため revert した #135370 の後に復活させるものです。
元 PR のマージ後のテスト失敗は、#133174 の並行する変更が原因でした(元 PR の CI を再実行せずに main に取り込まれたため)。本 PR では、証明書検証コールバックに依存するテストで TLS セッション再開(resumption)を無効化し、コールバックが確実に実行されるよう修正しています。
続きを読む
@vitek-karas ・ GitHub ・ area-skills
GitHub Agentic Workflows (gh-aw) を v0.86.2 から v0.89.21 へアップグレードし、6つのagenticワークフローのlockファイルとaction/containerキャッシュを再生成するPRです。リポジトリ固有のバージョン上書きは廃止し、gh-aw既定の依存バージョンを採用しています。MCP Gatewayおよび holistic-review のCLI proxyは v0.4.9 から v0.4.25 に更新されています。
続きを読む
@ViveliDuCh ・ GitHub ・ area-System.ComponentModel.DataAnnotations
非同期のDataAnnotations検証と、非同期のMicrosoft.Extensions.Optionsバリデータに関するXMLドキュメントコメントを明確化・拡充する、ドキュメントのみの変更です。ランタイムの動作やAPIシグネチャの変更は含まれません。
同期フォールバック、ディスパッチ、キャンセル、例外、並行性に関するガイダンスを追記し、DataAnnotationsからOptionsへのブリッジおよびOptionsバリデーションのソースジェネレーターのコメントも補完しています。
DataAnnotations側の更新は dotnet/dotnet-api-docs#13101 と整合しています。Microsoft.Extensions.Options側のコメントはソース管理で、通常のAPIリファレンスのインポート処理で反映されます。
続きを読む
@davidwrighton ・ GitHub ・ area-CodeGen-coreclr
Wasm向けJITで、整数の等価/非等価比較においてゼロとの比較を最適化するPRです。ゼロ定数オペランドをcontainedにし、「ゼロ定数 + 汎用の等価命令」の代わりに i32.eqz / i64.eqz を直接出力します。また、結果が br_if に直接渡される場合の冗長な i32 != 0 正規化を削除します。
比較結果は引き続き0または1に正規化されます。そのため非等価の値は eqz を2回使う形になり、条件に合致する i32 != 0 の分岐のみ元の値を br_if が直接消費します。この直接消費は i32 に限定され、i64 はWasmの分岐条件が i32 を要求するため i64.eqz を引き続き使用します。
続きを読む
@caraioniurie47 ・ GitHub ・ area-System.Reflection linkable-framework community-contribution
CustomReflectionContext でマップされた型に対する Type.GetMethod の genericParameterCount を受け取るオーバーロードが、GetMethodImpl(string, int, ...) の未実装により NotSupportedException を投げる問題を修正します。GetMethodImpl を(個数なしで)オーバーライドしていた3つの型クラスに、このオーバーロードのオーバーライドを追加しています。
続きを読む
@Copilot ・ GitHub ・ area-System.Reflection
Delegate.Method を、ジェネリック基底クラスの private メソッドを指すオープンデリゲート(open delegate)に対して読み取ると、Checked CoreCLR では assert が発生し、Release では派生型のリフレクションキャッシュ経由でそのメソッドが露出してしまう問題の修正です。
修正後は、デリゲートの第1引数に由来する派生型ではなく、そのメソッドが属する正確なジェネリック基底のインスタンス化に対してメソッドを解決します。
続きを読む
@elinor-fung ・ GitHub ・ breaking-change area-Host
従来の framework 解決設定である rollForwardOnNoCandidateFx と applyPatches のサポートを削除します。あわせて、roll-forward の優先順位処理を「最も優先度の高い設定を先にチェックする」方式に単純化しました(従来は最も低い優先度の設定から始めて、より高い設定で上書きしていく方式)。
Resolves #131611。
続きを読む
@lewing ・ GitHub ・ area-Diagnostics-cdac
WASM上でcDACのIStackWalkが、R2Rコードがトランジションヘルパー(例: WasmR2RToInterpreterThunk → ExecuteInterpretedMethodWithArgs_PortableEntryPoint)経由でインタプリタに入った場合に、InterpreterFrameから次の明示的Frameまでの間のR2Rフレームを取りこぼす問題を修正します。ヘルパーはTransitionBlock.m_StackPointerにR2R呼び出し元のリニアスタックポインタを記録し、m_ReturnAddressを0のままにすることがありますが、cDACはこれを扱えず、生の戻りアドレス(0)とTransitionBlock末尾を使っていたため、エラーなくフレームが欠落していました。ネイティブ側(GetWasmVirtualIPFromStackPointer、TransitionFrame::GetSP等)と同じ挙動に揃え、TransitionFrameからR2R呼び出し元へスタックウォークを継続します。
続きを読む
@jkoritzinsky ・ GitHub ・ area-ILTools-coreclr
マネージド版 ilasm(src/tools/ilasm)に、ネイティブ版 ilasm が持つ「擬似カスタム属性(pseudoattributes)」のサポートを移植する PR です。一部の属性は通常のカスタム属性としてではなく、メタデータとして直接出力される必要があります。本 PR では該当する属性をデコード・検証し、対応するメタデータのフラグ、レイアウト、インポート情報、マーシャリング記述子として出力します。
続きを読む
@davidwrighton ・ GitHub ・ area-VM-coreclr
単一モジュールのアセンブリを前提に、メタデータのシグネチャ/型インポート用ヘルパーを簡素化するPRです。インポートヘルパーが「1つのソースモジュールと1つのデスティネーションモジュール」のみを扱う形になり、到達不能なマルチモジュール用のパスや ModuleRef 作成パスが削除されました。公開メタデータAPIのシグネチャは維持されますが、従来のアセンブリ/ハッシュ関連パラメータは無視され、AssemblyRef.HashValue は空のBLOBとして出力されます。
続きを読む
@Copilot ・ GitHub ・ linkable-framework area-Tools-ILLink
ILLinkツールのパッケージに、Windows向けのDiaSymReaderネイティブアセット(DLL)を同梱するようにする変更です。既存の共有パッケージング用targetsをインポートして再利用し、x86・amd64に加えてARM64のDLLも対象に含めます。
@davidwrighton ・ GitHub ・ area-ReadyToRun
Wasm R2Rイメージでは、コンパイルされた全メソッドごとに個別のWasmモジュール関数定義が出力されていました。これを改め、シグネチャ・関数本体・リロケーションが完全に一致する場合は、1つの正規(canonical)なモジュール関数定義を共有する重複排除を導入します。
各マネージドメソッドは、固有のR2R runtime-functionインデックスとelement-tableスロットを維持します(ポータブルエントリポイント、call_indirect、スタックウォーク、MethodDesc検索のメソッド同一性を保持)。
複数のtableスロットが1つの正規モジュール関数を参照でき、直接呼び出しは正規関数インデックスを対象にします。
重複排除はR2R WebCILオブジェクトライター内で完結し、NativeAOTのWasmオブジェクトライターでは有効化されません。
続きを読む
@dhartglassMSFT ・ GitHub ・ area-Infrastructure-coreclr
CoreCLRのjitstress-isas-*アウターループパイプラインに、ライブラリの一部テストを追加するPRです。これまでJIT stress ISAs用のライブラリテストが存在せず、例えばSystem.Numerics.VectorのテストとjitstressISAsの組み合わせで検出できたはずのバグ(fuzzingで検出)を取りこぼしていました。
ライブラリ全体用のパイプラインを3つ追加するほどの価値はないと判断し、関連性の高い以下のテストのみを既存のISAパイプラインに追加しています。
System.Numerics.Vectors
System.Numerics.Tensors
System.Runtime.Intrinsics
System.Linq
System.Memory
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Security
Unix上のNegotiate認証(NegotiateAuthentication)で、サーバー側のRemoteIdentityにKerberos PAC(urn:mspac:logon-info)由来のSIDクレームを追加するPRです。WindowsではWindowsIdentityによりユーザー/グループSIDが取得できますが、Unixではgss_display_nameによる表示名のみでした。本PRではGSSAPI経由でPACのlogon-infoを取得・デコードし、GenericIdentityにPrimarySid、PrimaryGroupSid、GroupSidクレームを追加します(SIDはWindows専用のSecurityIdentifierではなく文字列で保持)。
PACは、KDCが発行しない、クライアントが拒否する、Windowsグループを持たないレルムなど、存在しないのが通常のケースもあるため、PACがなくても認証は失敗しません。クレームはGSSAPIが「authenticated」と報告した場合のみ追加され、不正なバッファの場合は例外ではなくクレームなしにフォールバックします。
続きを読む
@jkoritzinsky ・ GitHub ・ area-Infrastructure
src/tests 配下のランタイムテストについて、これまで独立していた「テストビルドジョブ」と「テスト実行ジョブ」をやめ、プロダクトビルドジョブの中でテストのビルドと Helix への送信まで実行するように変更します。NativeAOT と Mono のレグでは既に同様の構成になっており、一部プラットフォーム(特に macOS)でビルドマシンのキュー待ちが非常に長くなっているため、新規ビルドマシンのキュー待ちを省き、1 台のマシンで処理を完結させることで高速化を狙っています。src/tests のビルドは増えますが、全体では速くなる見込みとのことです。
今回は Pri0 のテストビルドである runtime.yml パイプラインのみが対象で、Pri1 など他のテストビルドは対象外です。最終的には全テストビルドを同様の構成にして、関連インフラを削除することが目標とされています。
続きを読む
@jkoritzinsky ・ GitHub ・ area-Infrastructure
Linux の arm/arm64/x64 向けビルドを、サービス可能な C++ 標準ライブラリ(libc++ + libstdc++ ABI)に対してビルドするようパイプラインを更新し、C++ 標準ライブラリ利用に関する CoreCLR のコーディングガイドラインをそれに合わせて改訂する PR です。#101088 および #101773 のフォローアップで、関連する dotnet/dotnet 側の PR は https://github.com/dotnet/dotnet/pull/8608 です。
続きを読む
@Copilot ・ GitHub ・ area-Meta
dogfooding(最新ビルドの試用)に関するドキュメントから、RuntimeFrameworkVersion を手動でピン留めする手順を削除するPRです。dotnet/dotnet(VMR)による統一的なランタイムビルドフローが整備されたため、この手順は想定される標準的な方法ではなくなった、というのが作成者の説明です。
2026年10月08日 (25 PRs) うち Bot 2 件 この日のページ →
@pcshrosbree ・ GitHub ・ area-Tools-ILVerification community-contribution
ILVerifyが委譲コンストラクタの関数ポインタとしてスタック値(native int引数、ローカル変数、定数など)を受け取る場合にNullReferenceExceptionでクラッシュしていた問題を修正します。修正により、検証エラーが適切に報告され、検証プロセスが完了するようになります。
@JulieLeeMSFT ・ GitHub ・ area-CodeGen-coreclr
JIT コンパイラで fgRemoveBlocksOutsideDfsTree() が DFS ツリーを再計算する際に、DFS 由来のアノテーション(m_loops など)が古いツリーに紐づいたままになり、fgDebugCheckFlowGraphAnnotations() でアサーション失敗を引き起こしていた問題を修正します。DFS ツリー置換前に DFS 派生アノテーションを無効化し、他の DFS 再計算箇所との一貫性を確保する変更です。
続きを読む
@maraf ・ GitHub ・ arch-wasm area-Build-mono os-browser
Mono ブラウザランタイムで onDotnetReady コールバックが異なるモジュール間で同期されず、登録されたコールバックが実行されないリグレッションを修正しました。loaderHelpers オブジェクトをコールバック状態の共有ストレージとして使用することで、ローダーと実行時との間でコールバック情報が正しく渡されるようになります。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
x86アーキテクチャにおけるGC追跡の不具合を修正するPRです。メモリ/スタック操作におけるrorx/xchg命令後のGCレジスタ追跡の不整合と、スピニングスレッドのGC停止ハング(特にInlinedCallFrameが関連)を解決します。最近のフルinterruptible化により、これまで潜在していた問題が顕在化しました。
@sbomer ・ GitHub ・ area-ReadyToRun
CoreLib の crossgen2 コンパイル呼び出しを、手書きの <Exec> コマンドラインから SDK が PublishReadyToRun で使用する共有 RunReadyToRunCompiler MSBuild タスクに移行しました。非複合パスはバイト単位で同一であることが検証済みですが、複合パス(Apple モバイル)はローカルで検証されていません。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのレジスタ再割り当て時にローカル変数のGC型を正しく使用するよう修正しました。GC型でないローカル変数(例:ネイティブint T*)がGC型の用途で再ロードされる際、レジスタが誤ってbyrefとしてマークされ、アンマネージド呼び出し時にGCが不正なアドレスを参照してクラッシュする問題を解決します。特にインライナーがポインタをbyref型のthisとして渡すTerraFXスタイルのパターンで発生していました。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
プロファイル情報に基づいて特殊化されたSequenceEqual呼び出しにおいて、可変長フォールバックのインライン化を保持する修正。従来はオリジナル呼び出しのインライン候補情報をクリアしていたため、サイズ予測が外れた場合にヘルパー呼び出しとベクトルレジスタスピルが発生していた。フォールバックの候補情報と戻り値プレースホルダーを保持し、インライン化前にQMARKを展開することで改善。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITコンパイラの値番号付け(VN)最適化において、SpanHelpers.SequenceEqualの最適化時に、マネージド実装ではnullポインタの逆参照でスローするはずの場合でもtrueを返してしまうバグを修正しました。短い非空シーケンス(0 < length < sizeof(nuint))のnull参照に対してはGT_NULLCHECKを保持し、ゼロ長およびロングバッファのショートカットは維持します。長さが未知でnull参照の可能性がある場合は関数呼び出しを保持し、引数の副作用の評価順序は保証されます。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITのGenTree::Compare関数を改善し、ノード比較時に複数の重要なフィールドをチェックするようにしました。特に、異なるフィールドシーケンスを持つ定数ノード(GT_CNS_INT)が誤って等価と判定され、ガード付きデューティ値分岐(GDV)の最適化で重要なパス依存情報が失われる問題を修正しています。Roslyn使用時に_containingTypeと_containingSymbolが同じオフセット(0x38)に存在する場合、異なる型チェック結果が同一視され、誤った最適化が行われていました。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Security
Windows SslStreamのハンドシェイク時に、認証情報キャッシュのスキャベンジング処理がキャッシュルックアップ後かつASC/ISC呼び出し前に最後の参照を解放することで発生するObjectDisposedExceptionを修正します。キャッシュヒット時に認証情報参照を取得し、ハンドシェイク完了/失敗時、認証情報置換時、ストリーム破棄時に参照を解放することで競合状態を排除します。キャッシュキーとパブリック認証動作は変更されません。
続きを読む
@dhartglassMSFT ・ GitHub ・ area-CodeGen-coreclr
JIT LSRAレジスタ割り当て中に、構造体リターンバッファへの参照とLEA命令間のコピー挿入時にアサーション失敗が発生する問題を修正します。Change #134644で導入されたgcWriteBarrierFormFromTargetAddressのfgAddrCouldBeHeapがコピーを透視できず、NO_REGのLEAから値をコピーしようとした際にアサーションが発生していました。修正はfgAddrCouldBeHeapにLEA除外後のgtSkipReloadOrCopyを追加するもので、動作結果への差分は観察されていません。
続きを読む
@steveisok ・ GitHub ・ area-System.Diagnostics.Process
macOSにおいて、waitid(WEXITED | WNOHANG | WNOWAIT)が停止した子プロセスを報告する一方でwaitpid(WNOHANG)がそれを回収できない場合、SIGCHLD ハンドラが共有ロックを保持したまま同じ子プロセスを何度も観察し、他のProcess操作がハングする問題を修正しました。回収できない子プロセスが報告された場合、no-progressループを継続するのではなく、すべての追跡対象の子プロセスをスキャンするフォールバックに切り替え、既存の高速パスと非ブロッキングフォールバックを活用します。
続きを読む
@janvorli ・ GitHub ・ area-VM-coreclr
Unix環境でのソフトウェア例外処理(EH)におけるメモリリークを修正。DispatchManagedExceptionが動的に確保されたコンテキストと例外レコードの所有権を取得していなかったため、ExInfoが必要に応じてこれらレコードの所有権を適切に管理するようにしました。
@tannergooding ・ GitHub ・ Servicing-approved area-System.Numerics
カスタム符号を持つ数値のパースと16進浮動小数点フォーマットにおいて、重複する符号プレフィックスの処理を修正しました。パース時は長い方の符号にマッチさせることを優先し、同じ長さの場合はPositiveSignを選択するように改善されています。これにより、フォーマットされたテキストのラウンドトリップが正確に動作するようになります。
@rzikm ・ GitHub ・ area-System.IO.Compression
ZstandardDictionary.Trainメソッドが、最初の75%のサンプルが8バイト未満の場合にプロセスをクラッシュさせる問題を修正しました。zstdトレーナーが符号なし整数アンダーフローを引き起こす可能性があったため、マネージコード側で防御的なガードを追加し、不十分なトレーニングデータをIOExceptionとして拒否します。
@radekdoulik ・ GitHub ・ area-Diagnostics-cdac
Wasm GC情報において、非アクティブフレーム内の予期しないレジスタスロットをフィルタリングする修正です。WasmGCInfoTraits.IsScratchRegisterメソッドを更新し、レジスタスロットが存在しないことを強制することで、ネイティブデコーダーのフォールバック動作と一致させます。既存のGC情報デコード、アクティブフレームの動作、エンコーディング定数、およびHAS_INTERRUPTIBLE_RANGESは変更されません。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
ループ内での関数呼び出しを含む場合に、広いSIMD値のカリー保存レジスタ予算を過大評価しないようにJITを修正しました。部分的なSIMDカリー保存を適切に考慮することで、ホイスティング最適化時のレジスタ割り当てが改善されます。
@tannergooding ・ GitHub ・ linkable-framework area-Tools-ILLink
ILLinkのRoslynアナライザーが既知型の検証時に、型名チェック前に不要な名前空間フォーマットを行っていた問題を修正しました。メタデータ名を先に確認して不一致時に名前空間フォーマットをスキップすることで、大規模な生成コンパイルでのパフォーマンスを向上させます。
@pcshrosbree ・ GitHub ・ area-Diagnostics-coreclr community-contribution
LinuxおよびmacOSの debugger transport におけるDB_IPCE_RESOLVE_UPDATE_METADATA_*イベントのサイズ計算が欠落していた問題を修正します。プロファイラがSetILFunctionBodyでメソッドに新しいローカル変数を追加した場合、debuggerがそのメソッドのローカル変数を要求すると、デバッグ対象プロセスが不正なメモリを読み取ってSIGSEGVで クラッシュしていました。本修正により、3つのペイロード保有イベント(_1_RESULT、_2)と1つのヘッダーのみイベント(_2_RESULT)をGetEventSizeの switch文に追加することで問題を解決します。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Quic
QUIC テストにおいて、SslStreamCertificateContext の構築をキャッシュ化することで、テスト実行時のオンライン証明書失効確認(AIA ダウンロード)による遅延を排除します。Windows の Schannel では、リーフ証明書のみの設定により MsQuic がマネージド層で AIA ダウンロードを実行し、テストのハンドシェイクタイムアウト(10秒)を超過していました。この PR により、オフライン環境での事前構築コンテキストを QuicTestCollection レベルでキャッシュし、テスト間で再利用することで、AIA リクエストを完全に排除し、ハンドシェイク時間を約12.2秒から44ms に短縮します。
続きを読む
@rainersigwald ・ GitHub ・ area-Build-mono
マルチスレッドモードでのMSBuild実行時に非対応だったカスタムタスクファクトリ JsonToItemsTaskFactory を削除し、明示的な入力出力を持つコンパイル済みMSBuildタスクに置き換えました。WASM および Mono コンポーネントマニフェストの JSON 解析機能は、新しく追加された固定タスク実装で代替されます。
@jkoritzinsky ・ GitHub ・ area-System.Reflection tenet-performance
カスタム属性の具現化と呼び出し処理をネイティブコード(C++)からマネージドコード(C#)に移行するレイヤー2の改善です。従来のQCallsを廃止し、バウンド済みマネージドBlobリーダーを再利用して、中間データグラフを構築せずにカスタム属性を処理します。プリミティブ/Enum型のコンストラクタ引数はアンボックス状態を保持し、InlineArray4<T>ストレージと必要時のヒープフォールバックを活用します。パフォーマンスは基準実装の0.73~0.82倍 の処理時間に改善されました。
続きを読む
@elinor-fung ・ GitHub ・ area-Host
COMおよびC++/CLI(IJW)ホスティングに対して、System.Runtime.InteropServices.[COM|CppCLI].LoadContextIdentifier設定プロパティを通じてコンポーネントロードコンテキスト(ALC)の指定機能を実装しました。同じ識別子を持つコンポーネントは同一のコンテキストを共有でき、リゾルバーは読み込み順序に基づいて登録されます。分離コンテキストまたはデフォルトコンテキストを使用するコンポーネントは影響を受けません。
続きを読む
2026年10月07日 (27 PRs) うち Bot 2 件 この日のページ →
@jkotas ・ GitHub ・ area-Codegen-JIT-mono
PR #135029で導入された「自己参照構造体ラッパーのスタックオーバーフロー正規化修正」をリバートします。この変更により、mono/aotコンパイラにおける関連する実装と対応するテストが削除されます。
@jkotas ・ GitHub ・ area-System.Net
PR #134919で追加されたSmtpClient.SslOptionsプロパティをリバートするものです。このプロパティはクライアント単位でのTLS設定を可能にする機能でしたが、完全に削除されます。
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
WebAssembly向けのAOT(Ahead-of-Time)コンパイラにおいて、外部関数(KnownExternFunctions)の呼び出し規約の定義を、一括してUnmanagedとするのではなく、関数ごとに区別する変更です。RyuJITの期待するシグネチャと実際の生成コードのシグネチャを一致させることが目的です。GCPollの処理で問題が発生したため、マネージド側でスタックポインタパラメータを自動追加できるようにマネージドに変更し、他の関数の要件も監査して対応されています。
続きを読む
@SkyDevLab ・ GitHub ・ area-System.Runtime community-contribution
Array.GetValueとArray.SetValueにReadOnlySpan<int>を受け取るオーバーロードを追加します。これにより、多次元配列へのアクセス時にヒープ割り当てを回避でき、stackalloc int[]を活用した高性能なシナリオに対応します。
// 新しいオーバーロード
public object? GetValue(params ReadOnlySpan<int> indices)
public void SetValue(object? value, params ReadOnlySpan<int> indices)
続きを読む
@caraioniurie47 ・ GitHub ・ area-System.Net.Security community-contribution
TlsSession.SetRemoteCertificateValidationResultメソッドにおいて、証明書検証が拒否された際のAuthenticationExceptionメッセージが正しくフォーマットされていなかった問題を修正します。2つの分岐(_isHandshakeCompleteと_resumeAfterCertValidation)でSR.Formatを使用せずにリソース文字列を使用していたため、メッセージが{0}プレースホルダーのまま出力されていました。修正により、SslStreamと同様にSslPolicyErrorsでリソースをフォーマットするようになります。
続きを読む
@Copilot ・ GitHub ・ area-Diagnostics-coreclr
CordbType::GetStaticFieldValueメソッドにおいて、m_pClassがnullであるかのチェック前にそのメンバーにアクセスしていた問題を修正します。型の検証とnullチェックをメタデータ参照よりも前に移動することで、無効な型に対するクラッシュを防止し、代わりにE_INVALIDARGを返すようにしました。
@jkotas ・ GitHub ・ area-VM-coreclr
PreallocatedSentinelObjectをフローズンヒープに割り当てることで、通常のヒープ上のピン留めオブジェクト数とハンドル数を削減します。これによりメモリ管理をより効率化します。
@MichalStrehovsky ・ GitHub ・ arch-wasm area-NativeAOT-coreclr
WebAssembly(WASM)環境でのコンパイラコードブロックのデバッガビュー表示をサポートするため、Disassemblerに対応を追加しました。
@wfurt ・ GitHub ・ area-System.Net.Http
HttpListener NTLM認証テストの診断情報を向上させるため、粗いNtlmHandshakeResult列挙型を、認証状態・HTTPステータス・失敗のハンドシェイク段階を保持する詳細な結果型に置き換えました。既存のextended-protection policy変更時のHTTP 401拒否要件は維持しており、間欠的なテスト失敗(#135190)の原因を特定しやすくしています。
@springmin ・ GitHub ・ area-System.Threading community-contribution
OpenHarmony プラットフォームが robust mutex API(pthread_mutexattr_setrobust/pthread_mutex_consistent)をサポートしていないため、名前付きミューテックスでこれらのAPI呼び出しをスキップし、共有メモリベースの実装にフォールバックするよう変更します。OpenBSD/Haiku/Appleと同様の条件分岐を追加します。他のプラットフォームへの影響はありません。
続きを読む
@Copilot ・ GitHub ・ area-VM-coreclr
CoreCLR VM ヘッダーファイルから廃止された JIT_TrialAlloc の前方宣言とフレンド宣言を削除するクリーンアップです。
@am11 ・ GitHub ・ area-PAL-coreclr community-contribution
coreclrの各種コンポーネント(デバッグ、GC、ランタイムロジック等)に散在している未使用の関数定義、変数宣言、ヘッダー宣言を削除するクリーンアップです。合計277ファイル以上で約3,700行以上のデッドコードが削除されます。
@aw0lid ・ GitHub ・ area-CodeGen-coreclr community-contribution
SequenceEqualの自己比較時に定数長の場合でも最適化が適用されないバグを修正。equal-VN(値番号が等しい)チェックを定数長チェックの前に移動することで、定数長を持つ自己比較がtrueにコンパイル時折畳みされるようにしました。
@davidwrighton ・ GitHub ・ area-ReadyToRun
ReadyToRun (R2R) コンパイラにおいて、キャッシュされたマネージドヘルパーの急速登録依存関係を保持する修正です。ヘルパーのキャッシュヒット時に登録追跡が失われていたため、ランタイムのスタックウォークが不正にフィルタリット関数と判定される問題を解決します。登録依存関係の追跡をキャッシュヒット時にも行うようにし、並列度1および2の両方でSystem.Threading.Thread.PollGCの急速メソッドエントリ登録をテストする回帰テストを追加します。
続きを読む
@MihaZupan ・ GitHub ・ area-System.Net
SSE(Server-Sent Events)パーサーにおいて、event: フィールドを含むがデータがない空のイベントブロック後に、イベントタイプがリセットされずに次のイベントに流用される問題を修正します。HTML仕様に従い、終端の空白行でイベントタイプをリセットし、デフォルトの "message" 型を使用するようにします。id: および retry: の値は保持されます。
@martincostello ・ GitHub ・ breaking-change area-System.Diagnostics.Activity community-contribution
ActivitySamplingResult.PropagationData が指定されて新しい Activity を作成する際、タグとリンクのコピーをスキップして パフォーマンスを最適化する変更です。特に9個のタグと1個のリンクを含む場合、メモリ割り当てが49~57%削減され、実行時間が45~51%短縮されます。
@rzikm ・ GitHub ・ area-System.Net.Http
TLS再開始(セッション再開)時の証明書検証スキップに対応するため、HttpClientテストを分離します。PR #133174で導入されたTLS再開始のデフォルト動作により、セッションキャッシュが既存接続から生成されると、証明書検証やユーザー検証コールバックが実行されなくなります。このPRは既存のハンドラーヘルパーにallowTlsResumeオプションを追加し、検証に依存するテストでのみ完全ハンドシェイクを要求することで、テストの分離を実現します。公開APIやプロダクトコードの変更はなし 。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-VM-coreclr
WebAssembly向けのChecked-inされたCoreClr呼び出しヘルパーテーブルがマネージドコードと同期しているかをCI検証する機構を追加します。#134978でWASIにFEATURE_PERFTRACINGが有効化された際、テーブルが再生成されず、結果として起動時にGetUnmanagedCallersOnlyThunk: unknown thunkエラーで失敗していた問題に対応します。
続きを読む
@max-charlamb ・ GitHub ・ area-Diagnostics-coreclr
Windows x86 cDAC(Compact Debugging Access Component)のスタックアンワインド処理で、ExternalMethodFrameがnull MethodDescで構築される際のスタックポップハンドリングの不具合を修正します。MethodDescがnullの場合、ReadyToRun import-slot GCRefMapから取得したスタックポップカウントを使用して正しく調整されるようになり、GC-referenceストレステスト中の間欠的なフレーム不整合(15フレーム中5フレームマッチ、7フレーム不整合)が解決されます。
続きを読む
@adamsitnik ・ GitHub ・ area-System.Diagnostics.Process
Windows上でKillOnParentExitプロセス作成時にJob hierarchy(ジョブオブジェクトの階層構造)の変更に対応するよう改善しました。キャッシュされたJob Objectが互換性を失った場合に新しいJob Objectで再試行し、アクティブな子プロセスを保持している前のJobを保持しながら、非アクティブなJobを適切にクローズするリソース管理を実装しています。
@pavelsavara ・ GitHub ・ area-Codegen-AOT-mono
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);
}
続きを読む
@rzikm ・ GitHub ・ area-System.Net
SmtpClient.SslOptionsプロパティを実装し、アプリケーションがプロセス全体の設定に依存せずにクライアント単位でSMTP TLS設定を構成できるようにします。SslClientAuthenticationOptionsは遅延初期化され、同期・非同期のTLS認証に使用されます。TargetHostがnullの場合は現在のSMTPホストにデフォルト設定されます。SslOptionsの割り当ては常にキャッシュされた接続を無効化しますが、ネストされたコレクションの埋め込み編集は無効化しません。
続きを読む
@lewing ・ GitHub ・ Servicing-approved os-ios os-maccatalyst area-CodeGen-Interpreter-coreclr
オープン仮想デリゲートが、プラットフォーム側で動的コード生成をサポートしていない環境(browser-wasm、iOS、tvOS、macCatalyst)で、コンパイル済みコード(R2R/JIT)から呼び出された際にクラッシュする問題を修正。インタープリタのINTOP_CALLI命令にCID_VirtualOpenDelegateDispatchの特別処理を追加し、デリゲートとthis引数からターゲットを解決するようにします。
続きを読む
@Copilot ・ GitHub ・ area-ReadyToRun
Composite ReadyToRun(AOT)でのクロスモジュール インライン化により、別のアセンブリのモジュール初期化子の呼び出しが削除され、実行されないという問題を修正します。例えば、UnsafeAccessorを使用する場合、プライベートフィールドの書き込みが行われない状況が発生していました。
グローバルモジュールの TypeHandle fixupを保持してモジュール初期化子の実行を確保し、バージョン間での互換性も保証する修正です。
続きを読む
@Copilot ・ GitHub ・ area-System.Net
NegotiateAuthentication クラスのXMLコメントドキュメントを改善し、IntelliSenseで表示される内容を明確化しました。認証完了のセマンティクスを正確に記述し、開発者が正しく理解できるようにしています。
主な改善点:
IsAuthenticated が交換完了を示すことを明確化(成功ではなく)
GetOutgoingBlob のステータスコードを参照するよう指示
TargetName から誤解を招く IsAuthenticated への参照を削除
続きを読む
2026年10月06日 (33 PRs) うち Bot 2 件 この日のページ →
@tannergooding ・ GitHub ・ Servicing-approved area-System.Numerics.Tensors
.NET 11.0向けに、System.Numerics.Tensorsライブラリの重要な正確性と形状一貫性の修正をバックポートしています。配列要素型の検証、テンソルスライスのピニング、形状/ストレージの検証、ブロードキャスト、重複処理、リサイズのゼロフィル、数値演算の問題を修正し、同時に形状アライメントの一貫性を確保し、ネイティブ幅のカウント処理を保持します。
@EgorBo ・ GitHub ・ area-System.Runtime
UTF-8 X-format Guid解析における逆転したホワイトスペースチェックを修正しました。初期スキャンがホワイトスペースなしの入力に対して不要な一時バイト配列の割り当てとコピーを行っていた問題を解決し、元のスパンを返すパスを有効にします。標準的なX-format入力では割り当てが96バイトからゼロに削減されます。
// 標準的なX-format Guid解析
Guid.Parse("{0x00112233,0x4455,0x6677,{0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff}}"u8);
続きを読む
@eiriktsarpalis ・ GitHub ・ area-System.Text.Json
JsonSchemaExporterがグローバルUnmappedMemberHandling = Disallow設定下で[JsonExtensionData]を持つ型に対して不正にadditionalProperties: falseを出力する問題を修正しました。JsonTypeInfo.EffectiveUnmappedMemberHandlingを使用することで、エクスポーターが拡張データのオーバーライドを尊重し、通常の型は引き続き厳格に処理されるようにします。
続きを読む
@vitek-karas ・ GitHub ・ area-Infrastructure
CI scanner と feedback ワークフローで GPT-6.1 Sol モデルを /chat/completions 経由で呼び出していた問題を修正しました。GPT-6.1 Sol は Responses API を必須とするため、ワークフロー設定で COPILOT_PROVIDER_WIRE_API: responses を明示的に指定することで HTTP 400 エラーを解決します。
続きを読む
@agocke ・ GitHub ・ area-Infrastructure-coreclr
Azure Pipelines CI/CDの構成を変更し、Roslyn コンパイラ出力キャッシング機能を Windows ビルドで有効化します。Unix 向けには sccache を保持しながら、Windows x64/x86/Arm64 向けには Roslyn 専用のキャッシュを統合します。キャッシュと統計情報テンプレートを共有化し、ビルド構成の保守性を向上させます。
@caraioniurie47 ・ GitHub ・ area-System.Reflection community-contribution
CustomReflectionContextによって返されるTypeとメンバーがHasSameMetadataDefinitionAsでNotImplementedExceptionをスローしていた問題を修正しました。投影型とメンバークラスが、それらがラップするメンバーを比較し、同じコンテキストで投影されたメンバーのみマッチするようになります。
@caraioniurie47 ・ GitHub ・ area-System.Reflection community-contribution
CustomReflectionContextで基本型に追加されたプロパティが派生型でInheritedPropertyInfoとして報告される際、GetAccessorsメソッドが基本型のアクセサーを返していた問題を修正。GetGetMethodとGetSetMethodと同様に、GetAccessorsがInheritedMethodInfoでラップされたアクセサーを返すようにして、ReflectedTypeが派生型で統一されるようにしました。
続きを読む
@compujuckel ・ GitHub ・ area-System.Text.Json community-contribution
PR #124644でPascalCase命名ポリシーのサポートが追加されましたが、JsonNamingPolicyAttributeでの実装が漏れていました。本PRでは、JsonNamingPolicyAttributeにPascalCaseを指定した際に発生していたArgumentOutOfRangeExceptionを修正します。
[JsonNamingPolicy(JsonKnownNamingPolicy.PascalCase)]
public class TestClass
{
public int Property { get; init; }
}
続きを読む
@adamsitnik ・ GitHub ・ area-System.Diagnostics.Process
ProcessStartInfo.Arguments と ProcessStartInfo.ArgumentList に埋め込まれたNull文字(\0)をバリデーションして拒否する機能を追加しました。バリデーションは ProcessStartInfo.ThrowIfInvalid の共有パスで実行され、プロセス起動前にプラットフォーム固有のコマンドライン構築前に検証が行われます。これは #132214 および #132640 の環境変数検証と同様の衛生的なバリデーション(primary security mitigation ではなく)です。
続きを読む
@janvorli ・ GitHub ・ Servicing-approved area-GC-coreclr
vxsortのalign_vectorized関数におけるバッファサイズ計算の負数バグを修正します。GC mark list のソート処理中にcoreclr!memcpyでアクセス違反が発生する問題を解決します。このバグは.NET Core 6の導入時から存在しており、特にServer GC環境で再現されていました。
@eiriktsarpalis ・ GitHub ・ area-System.DirectoryServices
Unix環境(Linux・macOS)のBER(Basic Encoding Rules)デコード処理を修正します。ベクトル形式のデータを専用のインタロップパスに経由させ、x形式の任意のBER要素はber_get_stringbv API経由で処理するようにしました。これはAppleのLDAPフレームワークでber_skip_elementがエクスポートされていない問題に対応するものです。
@lewing ・ GitHub ・ area-Infrastructure-libraries os-wasi
WASI ホスト上で AppContext スイッチが正常に機能するようになったため、これらのスイッチに依存する 28 個の WASI テストを再有効化するPRです。#134964 により wasihost がアプリケーションのランタイム設定プロパティをランタイムに渡すようになり、#134954 で報告されていた問題が解決されました。
@rzikm ・ GitHub ・ area-System.IO.Compression
ZIP AES暗号化エントリの検出ロジックを修正しました。WinZip AES形式では暗号化フラグと圧縮方法99の両方が必須ですが、以前はヘッダーで正しく識別されていない場合でも有効なAES拡張フィールドが暗号化・圧縮方法をオーバーライドしてしまう問題がありました。修正後は共有AES述語を使用してエントリを読み込み、AESエントリが必要な拡張データを欠く場合はInvalidDataExceptionをスローします。
続きを読む
@jkotas ・ GitHub ・ area-Infrastructure-libraries
typeof式のキャッシング処理を削除する最適化除去PRです。静的フィールドに型情報をキャッシュしていた実装を廃止し、typeofを直接参照するように変更します。JITコンパイラがtypeof式を効率的に最適化するため、手動キャッシングは逆に性能低下を招くという判断に基づいています。
@Copilot ・ GitHub ・ area-System.Reflection
Open Nullable<> 型の割り当て可能性チェックにおいて、チェックビルドで不正なアサーションが発生していた問題を修正しました。ジェネリック引数を MethodTable* ではなく TypeHandle として扱い、MethodTable.NullableType プロパティを通じて読み込むことで対応しています。
@vitek-karas ・ GitHub ・ area-Infrastructure
CI scanner のリポジトリ参照機能を復旧するパッチです。前回の変更(#133684)で repos バックエンドツールセットを削除した結果、本番環境のGiteway経由でスキャナが候補 Issue を読み込む際に search_repositories 内部呼び出しが失敗していました。本修正では repos をリストアし、ロックファイルを再生成し、回帰テストを追加して、本番・評価環境のバックエンドツールセット一貫性を確保します。
続きを読む
@steveisok ・ GitHub ・ area-System.Diagnostics.Process
Process テストスイートの実行予算不足を解消するため、クラスレベルの並列実行を Windows/Linux で復活させるもの。環境状態に敏感なテストを RemoteExecutor で隔離し、macOS ではアセンブリ全体のシリアル化を維持する。このアプローチにより、テスト実行時間の短縮と並行実行による問題の回避を両立させる。
@EgorBo ・ GitHub ・ area-System.Threading
Thread.CurrentOSThreadIdの実装をCoreCLRとNativeAOT間で統一し、プラットフォーム固有の相互運用を共有化しました。Windows/Unixプラットフォーム向けのスレッドID取得をネイティブ相互運用層を通じて統一的に処理し、Mono実装は従来通り保持されます。WASIでは単一スレッド環境のためスレッドID 1 を返すようになりました。
@EgorBo ・ GitHub ・ area-VM-coreclr
CoreCLR と NativeAOT 間で Thread.SpinWait、Thread.Yield、OptimalMaxSpinWaitsPerSpinIteration の実装を統一しました。マネージド実装を共有 Thread.cs に移動し、ネイティブ実装を MiscNativeHelpers.cpp(両ランタイムにコンパイル)でサポートしています。NativeAOT はハードコードされた値(8)の代わりに計測された OptimalMaxSpinWaitsPerSpinIteration を報告するようになります。
続きを読む
@jkoritzinsky ・ GitHub ・ area-ILTools-coreclr
管理型ilasmで /OPTIMIZE フラグと生のメソッドボディ生成をサポートします。デフォルトでは作成者が指定した命令形式(long/short/macro)を保持し、/OPTIMIZE 指定時のみ定数とブランチをコンパクト化します。新しいメソッドボディライターにより、署名付きオフセットラベルと予約済みオペランド修正を通じてバイト単位の忠実なアセンブリを実現し、エラートレランスモードで不正なEH境界も保持できます。
続きを読む
@tannergooding ・ GitHub ・ area-System.Numerics
16進数浮動小数点数(hexadecimal float)のカスタム符号のラウンドトリップ問題を修正します。数値パース時に最長マッチするカスタム符号を選択し、同一長の場合はPositiveSignを優先することで、16進浮動小数点数、科学記法(E形式)、整数でカスタム符号のプレフィックスオーバーラップが一貫して機能するようにします。
@SkyDevLab ・ GitHub ・ area-System.IO.Compression community-contribution
Zstandard圧縮オプションにHashLog2とChainLog2プロパティを公開し、大規模プリフィックス(>32MB)に対するデルタ圧縮の際に、エンコーダーがインデックステーブルの制限を超えてプリフィックス全体をインデックスできるようにします。
public sealed partial class ZstandardCompressionOptions
{
public static int MinHashLog2 { get; } // 6
public static int MaxHashLog2 { get; } // 30
public static int MinChainLog2 { get; } // 6
public static int MaxChainLog2 { get; } // 30 (64-bit) / 29 (32-bit)
public int HashLog2 { get; set; } // 0 = デフォルト(Quality から自動決定)
public int ChainLog2 { get; set; } // 0 = デフォルト
}
続きを読む
@SwapnilGaikwad ・ GitHub ・ community-contribution area-NativeAOT-coreclr
ARM64 PAC(Pointer Authentication Code)対応環境での戻り番地ハイジャック検出とエピログ検出を修正します。SP調整がエピログの証拠として誤認識される問題を解決し、スタックアンワインディング中に回復したSPを使用してPAC署名を正しく検証します。
@lewing ・ GitHub ・ arch-wasm area-System.IO os-wasi
WASIプラットフォーム上で Path.GetTempFileName() と Directory.CreateTempSubdirectory() を機能させるため、mkstemps/mkstemp と mkdtemp 実装をWASI向けに追加しました。wasi-libcがこれらのシステムコールを提供していないため、対応する PInvoke関数が失敗していた問題を解決します。
@rzikm ・ GitHub ・ area-System.Net.Security
SslStream.ReceiveHandshakeFrameAsyncにおいて、空のTLSハンドシェイクレコード(16 03 01 00 00)を受信した際にIndexOutOfRangeExceptionがスローされる問題を修正しました。レコード長の検証を先に行うことで、空のハンドシェイクレコードに対して即座にIOExceptionをスロー するように改善されます。
@jkoritzinsky ・ GitHub ・ area-Interop-coreclr
SAFEARRAYおよびVARIANT型の相互運用で3つの重大な問題を修正しています:
VARIANT配列要素がby-ref型に不正に強制変換される問題
静的配列のコピーバック時にネイティブ要素が失われる問題
クラス型配列がインスタンスチェックに違反する問題
これらの修正により、マネージド配列の要素型制約を保持し、正確な値の相互運用を実現します。
続きを読む
@LoopedBard3 ・ GitHub ・ area-Infrastructure-mono
runtime mainのデフォルトMonoパフォーマンス実行とビルドを廃止し、CoreCLRとNativeAOTのワークロードを保持するパイプライン最適化。Mono関連の自動実行をオプト インに変更しながら、明示的なMonoビルダーと既存の消費者は維持されます。
依存関係 : dotnet/performance#5322のマージが必要(新しいrunMonoパラメータを使用)。
続きを読む
@MichalStrehovsky ・ GitHub ・ area-System.Reflection
パラメータリフレクション機能の回帰テストを追加するPRです。パラメータのデフォルト値、名前なしパラメータのフォーマット、インデクサーと合成配列メンバーの修正型、ランタイムパラメータ再構築をカバーする包括的なテストスイートを実装しています。
@caraioniurie47 ・ GitHub ・ area-System.Reflection community-contribution
Reflection.Emit API で Type.IsByRefLike プロパティが4つの Type サブクラスで NotSupportedException をスロー していた問題を修正します。SymbolType、TypeBuilderImpl、GenericTypeParameterBuilderImpl は false を返し、TypeBuilderInstantiation は汎用型定義に処理を転送するようになります。これにより、MakeArrayType、MakePointerType、MakeByRefType、MakeGenericType での動作が一貫性を持つようになります。
続きを読む
@elinor-fung ・ GitHub ・ area-Host
ホストからランタイムへTrusted Platform Assemblies (TPA) を大きな文字列プロパティの代わりに、host_runtime_contract コールバック経由で構造化データとして渡すように変更しました。ホストは初期化時に解決されたアセンブリ名を提供し、ランタイムが必要に応じて各パスをオンデマンドで解決します。従来の TRUSTED_PLATFORM_ASSEMBLIES プロパティはオンデマンドで再構築可能であり、カスタムホストによる明示的な供給にも対応しています。パス区切り文字を含むパスでのアプリケーション実行が可能になります。
続きを読む
@agocke ・ GitHub ・ area-Infrastructure-libraries
dotnet/runtimeのビルドシステムにおいて、無条件に生成されていたネストされた静的グラフリストア用のバイナリログ(binlog)生成を廃止します。静的グラフリストア機能自体は有効なままで、ユーザーが明示的に要求した場合のみ外側のビルドbinlogを生成します。キャッシュされたリストアの場合でもパフォーマンス向上が期待されます。
2026年10月05日 (27 PRs) うち Bot 2 件 この日のページ →
@janvorli ・ GitHub ・ Servicing-approved area-GC-coreclr
.NET 9で導入されたGC(ガベージコレクション)のバグ修正。gc_heap::get_msl_wait_time関数がMSL(Managed System Library)待機時間を正しく抽出できない問題を修正します。この関数は出力引数soh_msl_wait_timeとuoh_msl_wait_timeを更新すべきですが、引数自体を更新してしまい、値が読み出されていませんでした。この影響によりDATAS(Dynamic Adaptation To Adjust Heaps)によるスループットコスト計算が正確でなくなり、Gen0割り当て予算とヒープ数適応に影響します。
続きを読む
@maraf ・ GitHub ・ arch-wasm area-Build-mono os-browser
Blazor WebAssembly(CoreCLR)ビルドで、ネイティブ再リンク用ヘッダーと中間JavaScript/SourceMapファイルが不要なスタティックWebアセットとして公開されていた問題を修正します。Emscripten中間SourceMapファイル(libBrowserHost.js.map、libSystem.Native.Browser*.js.mapなど)をランタイムパックから除外し、プラットフォームマニフェストエントリを削除。.hppヘッダーもWebAssemblyビルドの公開アセットからフィルタリングします。
続きを読む
@lewing ・ GitHub ・ area-ReadyToRun
dotnet/performance#5324の新しいComposite R2R microベンチマークレーン(coreclr_r2r_composite_v8)で、CoreCLR browser-wasmをPublishReadyToRunCompositeで公開するために必要なCrossgen2Tasks shimを、CoreCLR wasmパフォーマンスアーティファクトにコピーします。これにより、SDK ReadyToRunタスクが所有者を<entry>.r2r.wasmと命名するまでの暫定的な対応です。
続きを読む
@Copilot ・ GitHub ・ area-TypeSystem-coreclr
ジェネリック制約キャッシュの並行ロード時に、部分的に埋められていない制約配列が誤って公開される競合状態を修正しました。複数のローダーが共有の配列を使用し、すべてのスロットを埋めてからAllカバレッジを公開するように改善しています。
@Copilot ・ GitHub ・ area-TypeSystem-coreclr
ARM64などの弱順序アーキテクチャで、型ローディング完了フラグの読み取り時に古いペイロードデータが参照されるメモリ順序問題を修正しました。VolatileLoadを使用してAcquire セマンティクスを導入し、MethodTableおよびTypeDescの型ローディング状態チェックに取得的メモリバリアを追加します。
@Copilot ・ GitHub ・ area-VM-coreclr
SyncBlock同期テーブルのメモリ順序付けを強化し、競合状態を防止するPR。パッシブルックアップ時にオブジェクトヘッダービットを取得してからインデックスを解決し、初期化済みSyncBlocksを公開前にリリース発行することで、古いテーブルベースと新しいインデックスの組み合わせを防ぎます。内部実装の改善であり、公開APIへの影響はありません。
@Copilot ・ GitHub ・ area-NativeAOT-coreclr
NativeAOTで、ネストされた汎用型のType.Namespaceがnullを返していた問題を修正しました。メタデータスキーマを変更し、ネストされた型の名前空間解決を構造化親(enclosing type)を通じて行うように改善しました。
@Copilot ・ GitHub ・ area-NativeAOT-coreclr
NativeAOT環境のARM64プラットフォームにおいて、オブジェクトヘッダーとSyncTableの独立した読み込みが、新しく公開されたSync インデックスと古い、サイズが小さいテーブルをペアリングする競合状態を修正します。ヘッダー読み込みに取得(Acquire)セマンティクスを追加し、インデックス公開後のテーブルアクセスを順序付けます。
@vitek-karas ・ GitHub ・ area-skills
agentic workflows(GitHub Actions自動化ワークフロー)における自動Issue作成機能を無効化する変更です。ワークフロー失敗時の自動Issue生成を停止し、失敗情報はActions実行ログに留めることで、不要なIssue作成を防止します。意図的に作成されるKnown Build Error Issuesなどの出力は変わりません。
@jtschuster ・ GitHub ・ area-CodeGen-coreclr
GC stress テストでは合成オブジェクトが現在のスレッドに割り当てられるため、ゼロ割り当て assertion が無効化されます。既にプロセス分離されているテスト badinlinee に GCStressIncompatible マークを追加し、GC stress 下でのスキップを実現します。
@dhartglassMSFT ・ GitHub ・ arch-arm64 area-CodeGen-coreclr
ARM64プラットフォームで、Lowering::TryCreateAddrModeがRCPC2(ARM ISA拡張機能)の対応可能性を過剰に報告していた問題を修正しました。volatile load/storeでRCPC2対応を宣言した後に、アドレスオフセットが9ビット以内に収まらないなどの理由でバックアウトする場合、不要にRCPC2が必要と報告されていました。
@kotlarmilos ・ GitHub ・ area-Infrastructure
CI失敗スキャンワークフロー(ci-failure-scanとci-failure-scan-feedback)で使用するAIモデルをclaude-opus-4.8からgpt-6.1-solに切り替えます。評価エージェントモデルも同様に更新され、eval判定モデルは変更されません。GPT 6.1 Solはgh-aw v0.86.2のカタログに未含まれるため、モデル価格オーバーライドを追加し、実行あたり2500 AIクレジットの予算を設定しています。
続きを読む
@kotlarmilos ・ GitHub ・ area-Infrastructure
CI agentic workflowsからのノイズ削減を目的とした変更。スキャン、フィクサー、フィードバックワークフローが失敗やレート制限時の[aw]issue自動開設を廃止し、失敗はActions実行履歴に留める。フィクサーの実行を12時間ごとから平日1日1回に変更し、コメント数を最大3件に制限。フィードバックワークフローを日次から隔週実行に変更し、PR自動作成を廃止して、既存のKPIトラッカーissue(#128742)内で提案内容をプレーンテキスト+差分で最大3件表示するように変更。
続きを読む
@mdh1418 ・ GitHub ・ Servicing-approved area-Diagnostics-coreclr
createdumpプロセスの起動失敗時にexit()の代わりに_exit()を使用することで、親プロセスのクリーンアップロジックが不正に実行される問題を修正します。execve失敗時に診断ポート(diagnostic socket)が誤ってクローズされる問題を解決し、ターゲットアプリケーションが継続して動作する際に適切に接続できるようにします。
@vitek-karas ・ GitHub ・ area-System.Net.Http
CoreFoundation数値相互運用のABI不整合を修正しました。Apple proxy処理でCFNumberGetValueがCoreClRインタープリタ実行時にクラッシュする問題を解決します。CFNumberTypeが32ビット列挙型として宣言されていましたが、ネイティブCoreFoundationはすべてのサポート対象.NET Appleプラットフォームで64ビットCFIndexを使用しているため、型値が正しく解析されていませんでした。
続きを読む
@max-charlamb ・ GitHub ・ area-Diagnostics-coreclr
Windows ARM64プラットフォームをランタイム診断SOS(Debugger Symbolic Operating System)のカバレッジに追加します。runtime-diagnostics.ymlのデフォルトSOSプラットフォームリストにwindows_arm64を追加することで、Windows ARM64でのReleaseランタイムビルドとSOS Helixテストを有効化します。
@sbomer ・ GitHub ・ linkable-framework area-Tools-ILLink
ILLinkタスクの出力所有権を明確化するため、実行前に専用の出力ディレクトリをクリアするように変更。これにより、staleファイルの残存を防ぎ、全体キャッシング用の出力所有権を確立します。インクリメンタルビルドセマフォと per-library トリミング出力をタスク所有ディレクトリ外に移動。ユーザーは入力ファイルと無関係な中間ファイルをタスク所有ディレクトリ外に配置する必要があります。
@vitek-karas ・ GitHub ・ area-skills
GitHub CopilotおよびAgent Mergeによる自動化タスク(Known Build Error(KBE)issue作成、コメント投稿など)の権限管理を明確化するドキュメント更新です。ユーザーの明示的な認可がない限り、incidental な issue 作成やコメント投稿は下書きに留め、認可がある場合のみ公開するルールを定めました。Agent Merge の既存の publication scope は保持しつつ、不正な自動化投稿を防止する仕組みを整備しています。
続きを読む
@am11 ・ GitHub ・ community-contribution area-System.Formats.Tar
Unix の uid_t/gid_t は unsigned 型ですが、TAR ファイルから GNU base-256 または PAX 形式で Int32.MaxValue を超える uid/gid を読み込む際に OverflowException が発生していました。本変更では、これらの値を overflow チェックなしで int として再解釈し、負の値を GNU ヘッダおよび PAX 拡張属性では unsigned として書き込むことで、ラウンドトリップに対応します。TarWriter の既存のファイルシステム ID 処理と一貫性を持たせています。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-Infrastructure-libraries linkable-framework os-wasi
WASI CoreCLR向けのReadyToRun (R2R) コンパイルのテスト機能とCI環境を追加するPRです。#133265でR2Rパブリッシング機能がマージされた後、本PR は直接mainブランチをベースにしており、R2R JIT コンパイルの有効性検証と包括的なCI カバレッジを提供します。
@jtschuster ・ GitHub ・ area-NativeAOT-coreclr
WebAssemblyターゲット向けの外部関数呼び出しに型情報を付与する改修。ExternFunctionSymbolNodeがINodeWithTypeSignatureを実装し、すべての外部関数(ネイティブランタイムヘルパー、直接P/Invoke)が型付きWebAssembly関数インポートを持つようになりました。JitHelperとCorInfoImplは文字列ベースのヘルパー名から列挙型ベースのKnownExternFunctionに移行し、一貫した署名管理を実現しています。
続きを読む
@davidwrighton ・ GitHub ・ area-ReadyToRun
ReadyToRun(R2R)コードが、同じイメージ内で直接呼び出し可能なマネージJITヘルパーを直接呼び出すことをサポートします。Crossgen2がマネージJITヘルパーをプローブコンパイルする際、プロセッサ機能の固定なしでコンパイル可能なヘルパーは互いに直接呼び出し可能になります。ARM32/Arm64はアーキテクチャ上の制限によりヘルパーセルを使用し続けます。R2R形式をバージョン31.0 に更新(メジャーバージョンアップ)。
続きを読む
@rcj1 ・ GitHub ・ area-Diagnostics-coreclr
Profiler teardown時に能動的なProfilerのheap-walk状態が解放されるレースコンディションを修正。allocation-by-classデータブロックをプロセスグローバルからインスタンス所有に変更し、各Profiler独立のキャッシュ管理を実現しています。
@jkoritzinsky ・ GitHub ・ area-Interop-coreclr
CoreCLRの配列マーシャリング における3つの重大な回帰を修正:
不正なコピーサイズ : ポインタ配列のメタデータがポインタサイズのVARTYPEを使用しながらも、指す先の型のサイズでコピーしていた(例:4要素のbyte*[]が4バイトのみをコピー)
ピニング失敗 : blittableな値型のみがピニング対象となり、ポインタ型と関数ポインタ型が除外されていた
列挙型とchar配列 : 列挙型は基礎となる整数型でピニング判定、UTF-16のchar配列をピニング対象として認識すべき
修正により、ポインタ要素を不透明なネイティブサイズ値として扱い、マーシャリングオペランドで実際の要素TypeHandleを保持。ジェネリックコピーのキャリアとしてのみnintを使用。
続きを読む
@GrabYourPitchforks ・ GitHub ・ area-System.Diagnostics.Process
System.Diagnostics.Processの内部クラスDictionaryWrapperにセキュリティコメントを追加し、環境変数検証がセキュリティ対策ではなく、単なるコード明確化であることを示しています。環境変数は信頼できる制御プレーンメカニズムとして扱われるため、インデックスセッターでの検証は補足的なものであることを文書化しています。
2026年10月04日 (4 PRs) うち Bot 1 件 この日のページ →
@jkotas ・ GitHub ・ area-Infrastructure
最新のMSVCコンパイラによるビルド破損を修正します。PR #134967で修正された問題と同様のコンパイルエラーが別箇所で発生していたため、同じアプローチで対応しました。
@Copilot ・ GitHub ・ area-System.Reflection
NativeAOT reflection invocationにおいて、byref戻り値がヘルパーの一時的な引数ストレージへの参照を返すことで、ヘルパー復帰後に無効または不正なオブジェクトが参照される問題を修正します。5つのinvocation helperすべてがobject?を返すよう変更し、引数ストレージの有効期限切れまたはGC登録削除前に結果を変換します。
@Copilot ・ GitHub ・ area-Meta
GitHubで生成ファイルの外観をカスタマイズするための.gitattributes設定を更新しました。生成されたファイルをGitHubのDiffビューで適切に処理するための属性を追加・変更しています。
2026年10月03日 (4 PRs) この日のページ →
@agocke ・ GitHub ・ area-Infrastructure
ローリングビルドのDebugバリアント向けRoslyn コンパイラキャッシュのシーディング機能を追加します。Linux x64、Linux musl x64、macOS arm64 の3つのプラットフォーム向けDebug構成のCoreCLR_AllSubsetsローリング専用ビルドを新規追加し、DebugおよびReleaseのRoslyn キャッシュエントリを分離して、各構成が独立してイミュータブルキャッシュをシードできるようにします。既存のv1エントリは復元フォールバックとして残ります。
続きを読む
@wfurt ・ GitHub ・ area-System.Net
FtpWebRequestのListDirectoryDetailsメソッドにおける、TLS有無別の同期リクエスト処理に関する回帰テストを追加します。返されるリスト形式がプレーンテキストであること、アップロードされたフィクスチャが含まれていること、FtpStatusCode.ClosingDataで完了することを検証します。これは#134130で報告されたシナリオに対応しており、製品側の修正は既に#123234でmainに統合済みです。
続きを読む
@adamperlin ・ GitHub ・ area-CodeGen-coreclr
WebAssembly (Wasm) コードジェネレーションの完成度向上に伴い、JitWasmNyiToR2RUnsupported フォールバック機構を削除します。これにより、crossgen2がNYI_WASMに達した場合に黙ってメソッドを省略するのではなく、通常のJITコンパイル失敗として表示され、残存する実装ギャップが可視化されます。
@vitek-karas ・ GitHub ・ area-skills
CI KBE(Known Build Errors)イシュー検索を決定論的にするため、リポジトリスコープのMCPラッパースクリプトを導入し、検索結果の決定重複検出前に全候補をissue_readで検査することを義務付けます。組み込みイシュー検索アクセスを削除し、ラッパーパス強制と失敗時閉鎖動作をスキャナー評価で強化します。
2026年10月02日 (36 PRs) うち Bot 8 件 この日のページ →
@Copilot ・ GitHub ・ area-ILTools-coreclr
Managed ilasm の /FOLD オプションで、バイト単位で同一のメソッドボディ(ヘッダーと例外領域を含む)を検出し、既存のボディのオフセットを再利用することでコード重複を排除する機能を実装しました。これにより、IL出力ファイルのサイズ削減が期待できます。
@max-charlamb ・ GitHub ・ area-Diagnostics-coreclr
PEAssemblyのm_pImporterとm_pEmitterフィールドをガードするマクロをPROFILING_SUPPORTEDからPROFILING_SUPPORTED_DATAに変更しました。前回の変更でDAC(Debugging Diagnostic Assistant Companion)ビルドで定義されていないマクロが使用されたため、後続フィールド(m_pAssemblyBinderなど)のレイアウトがズレ、dumpalcコマンドが失敗していました。PROFILING_SUPPORTED_DATAを使用することで、プロファイリング有効ランタイムとそのDAC間でレイアウトを保ちながら、DAC内ではプロファイラ機能を有効化しません。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Security
TLS再開時に証明書検証コールバックがスキップされることにより、複数のSslStreamテストが不安定になる問題を修正しました。証明書検証に焦点を当てたテストに対して完全なハンドシェイクを強制し、セッションキャッシュの影響を排除します。これはテストのみの変更で、ランタイム動作やストリームI/Oヘルパーの機能には影響しません。
@rzikm ・ GitHub ・ area-System.Net
Windows Server 2025環境で非同期DNS解決テストResolveAddresses_NonExistent_ReturnsNxDomainがNxDomainではなくServerFailureを返す問題に対応。同期・非同期ケースを分離し、非同期ケースのみにActiveIssue属性を復元する変更。ネイティブDNS障害の根本原因は確認中。
@jkotas ・ GitHub ・ area-VM-coreclr
__SwitchToThreadメソッドを削除し、すべての呼び出しをminipal_switch_to_threadまたはminipal_sleepへの直接呼び出しに置き換えるリファクタリング。ランタイムの内部実装(CoreCLRのVM層)における間接呼び出しを排除し、minipal抽象化層への依存を統一する変更です。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITコンパイラで使用されていないまたは冗長なGenTreeフラグ(GTF_*)を削除するクリーンアップです。以下5つのフラグを削除:
GTF_ICON_CIDMID_HDL:設定・読み取りなし
GTF_ARRLEN_NONFAULTING等3つ:GTF_IND_NONFAULTINGの別名で静的アサーションのみで参照
GTF_DEBUG_VAR_CSE_REF:デバッグ専用でJitDumpフラグ出力のみ
GTF_CALL_M_STACK_ARRAY:WellKnownArg::StackArrayLocalと冗長
GTF_BOX_VALUE:すべてのGT_BOXノードで設定されるため不要
続きを読む
@vcsjones ・ GitHub ・ area-System.Security
Azure Linux 4(SymCrypt-OpenSSL)環境でのML-DSA実装の制限に対応するパッチです。SymCrypt-OpenSSLが外部乗算(external-mu)とPreHash署名に対応していないため、該当テストをスキップし、外部乗算初期化失敗時に暗号化例外を正しく発生させるよう修正します。
@tannergooding ・ GitHub ・ area-System.Numerics.Tensors breaking-change needs-breaking-change-doc-created
System.Numerics.Tensorsライブラリのテンソル形状処理を統一し、ネイティブ幅トラバーサルを修正する包括的な変更。ランク0の空のテンソルを有効な形状[0]として扱い、ブロードキャスト・要素ごとの演算・コピー・等値性・リシェイプ・軸操作・ビュー全般で一貫した動作を実現。内部の10個のAnyスパンカーネルを修正し、空入力のハンドリングを正確にする。ネイティブ幅コピーと最小/最大インデックスリダクションで重複安全性とSIMD意味論を保持。
続きを読む
@lewing ・ GitHub ・ area-Diagnostics-coreclr
ReadyToRun イメージでDebugInfoセクションが存在しない場合、cDAC(Component Debugging Assistant)のReadyToRunJitManager.GetDebugInfoがネイティブ実装と同様にTargetPointer.Nullを返すように修正しました。修正前は、nullチェックなしでアドレス0を参照し、wasmで無効なデータをデコードしてBadImageFormatExceptionを発生させていました。特に#134690でBrowser/WASIのReadyToRun発行物がデフォルトで--strip-debug-infoを指定するようになったため、この修正が必要になりました。
続きを読む
@radekdoulik ・ GitHub ・ area-Diagnostics-cdac
WebAssembly(Wasm)プラットフォーム向けのGC情報デコーディング機能をcDAC(Component Diagnostics Across Components)フレームワークに登録します。Wasm32GcInfoEncodingに対応した専用のWasmGCInfoTraitsを実装し、6ビットのコード長エンコーディングと最適化されたヘッダー形式に対応させます。インタプリタは既存の別形式を継続使用します。
続きを読む
@lewing ・ GitHub ・ area-Build-mono
WebAssembly Browser アプリケーションのビルドターゲットにおいて、Webcil バージョンの選択ロジックを修正します。従来は RuntimeFlavor == 'CoreCLR' の場合のみ Webcil V1 を選択していましたが、shipped SDK では RuntimeFlavor が設定されないため、CoreCLR アプリが意図せず Webcil V0 で出力され起動時にエラーが発生していました。この修正により、デフォルトを V1 とし、UseMonoRuntime == 'true' の場合のみ V0 を選択するように変更します。
続きを読む
@caraioniurie47 ・ GitHub ・ area-System.Net.Security community-contribution
TLS 1.3 のポストハンドシェイク認証(Post-Handshake Authentication)をクライアントが提供していない場合、RequestClientCertificate が例外をスローするのではなく Complete を返すようにしました。OpenSSL と SChannel の両方で NoRenegotiation エラーが報告される場合に対応し、既存の SslStream.NegotiateClientCertificateAsync の動作と統一させます。また TLS 1.2 のローカル無効化構成でも同様に処理されます。
続きを読む
@lewing ・ GitHub ・ area-Diagnostics-cdac
WebAssembly(WASM)ターゲットでのcDAC(Compact Debugging and Diagnostics)スタックウォーク実装の四つの主要な不具合を修正します。FEATURE_PORTABLE_ENTRYPOINTSでのMethodDesc検証失敗、Debuggerコントラクト未実装による初期段階での失敗、R2R InlinedCallFrameでの無限ループ、および解釈実行コード(Interpreter-only)での無限ループを解決します。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-System.Net os-wasi
WASI プラットフォーム上で Dns.GetHostAddressesAsync に IP リテラル(例:"127.0.0.1")を渡すと SocketException がスローされる問題を修正します。非同期パスがアドレスファミリーの不一致で getaddrinfo に IP リテラルを送信していたため、wasmtime 49.0.1以降で EAI_NONAME が返されていました。同期パスとの動作を統一し、IP リテラルの逆引きが不要な場合は WASI でも直接解析することで対応します。
続きを読む
@janvorli ・ GitHub ・ area-GC-coreclr
GC (ガベージコレクション) の MSL (MaxSegmentLength) 待機時間抽出処理におけるバグを修正します。.NET 9で導入された gc_heap::get_msl_wait_time 関数で、出力引数 soh_msl_wait_time と uoh_msl_wait_time が正しく更新されていなかった問題を解決します。
@Copilot ・ GitHub ・ Servicing-approved area-NativeAOT-coreclr
NativeAOT EventPipeで、アクティブなライターが存在する間にバッファが解放される use-after-free 問題を修正します。アクティブなライターの終了を待機するロジックを追加し、CoreCLRと同等の同期メカニズムを実装しています。この修正は #134838 の release/11.0 へのバックポートです。
@Copilot ・ GitHub ・ Servicing-approved area-NativeAOT-coreclr
NativeAOT環境でのEventPipeの使用後解放(use-after-free)バグを修正するバックポートです。イベントパイプのバッファがアクティブなライターによる書き込み中に解放されるという間欠的なクラッシュ問題を、アクティブなライターが完了するまで待機することで解決します。
@davidwrighton ・ GitHub ・ area-System.Threading
ThreadLocalData内の直接スレッド静的割り当てにおいて、アライメントパディングまで含めてフィットするまで割り当て成功をマークしない修正です。以前は、アライメント前のデータはフィットしているがパディング領域がない境界ケースで、無効な結果を保持したまま動的割り当てへのフォールバックを行わないバグがありました。この修正により、そのような場合は正しく動的非収集スレッド静的配列にフォールバックします。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITコンパイラのループアンローリング最適化において、ループテスト条件がブランチ条件ではない場合にアンローリングをスキップするように修正しました。これにより、Checkedアサーション失敗とRelease MinOptsへのフォールバックを回避します。
@jkoritzinsky ・ GitHub ・ area-VM-coreclr size-reduction
CoreCLRのReflection.Emit実装がPEスタイルのセクションと再配置記録の依存関係を排除しました。生成されたILとフィールドRVAデータをモジュールのローダアロケータに直接保存し、既存のトークン-アドレスマップを再利用することで、共有/静的CoreCLRがceefgenのリンク依存関係を不要にしました。
@jkoritzinsky ・ GitHub ・ area-CodeGen-Interpreter-coreclr
FEATURE_DYNAMIC_CODE_COMPILEDが無効な環境(WebAssemblyなど)では、インタプリタは全メソッドを必ず解釈するため、インタプリタ選択処理をコンパイル時に除外する変更です。動的コンパイルが利用できない場合の不要な処理をスキップして、コードサイズを削減します。
@lewing ・ GitHub ・ arch-wasm area-Host os-wasi
WASI上のCoreClRホスト(wasihost)が<app>.runtimeconfig.jsonの設定プロパティを読み込まず、フィーチャースイッチやRuntimeHostConfigurationOptionが有効にならない問題を修正します。runtimeconfig.binをエントリアセンブリ隣に配置し、ホストの初期化時に既存プロパティと統合することで、UTF-7エンコーディング有効化などの機能スイッチが正常に動作するようになります。
続きを読む
@MichalStrehovsky ・ GitHub ・ area-NativeAOT-coreclr
NativeAOT型ローダーを簡素化し、ランタイムレイアウトデータを正規テンプレートから直接派生させることで、3つのバグを修正し、型ローダーコードの10%以上を削除します。GC記述子、インターフェース・マップ、ジェネリック階層構造の処理を改善し、冗長な型ローダー状態とルックアップ抽象化を削除します。
@maraf ・ GitHub ・ arch-wasm area-System.Runtime.InteropServices.JavaScript os-browser
Emscripten Module から .NET のライフサイクル・ダウンロード進捗コールバックを分離し、ローダーが独自のコールバック状態を管理する設計に変更しました。withConfigLoaded が従来のモジュール設定コールバックを置き換え、withDotnetReady は内部的に利用可能なままです。CoreCLR と Mono は preInit と preRun の関数・配列形式の両方に対応し、スプレッド構文による起動失敗を回避します。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JIT の assertion propagation において、relop(関係演算子)の置換時にローカル変数のアクセスタイプ(ノード型)を保持することで、不正な狭い読み込み(narrow load)と比較が発生する問題を修正します。これにより、自己比較が正常に折りたたまれるようになります。
@jkoritzinsky ・ GitHub ・ area-System.Reflection
リフレクション呼び出しの性能最適化と予編集可能な共有マネージド・スタブの導入。従来のネイティブリフレクション・ディスパッチャーに代わり、MethodInfo.Invoke、ConstructorInfo.Invoke、MethodInvoker、ConstructorInvokerの一般的なシグネチャに対して、共有マネージド・スタブを使用します。最初の10,000呼び出しは共有パスを使用し、その後の呼び出しから特化した実装に昇格します。仮想/インターフェース・ディスパッチ、宣言型引数検証、列挙体の幅、参照型の方向引数、collectible所有権が保持されます。
続きを読む
@Copilot ・ GitHub ・ Servicing-approved area-System.IO
Linux上のFileSystemWatcherにおいて、ディレクトリの移動に関連する不完全なIN_MOVED_FROMイベント処理時にイベント処理ループが予期せず終了し、watcher が機能しなくなるバグを修正します。.NET 9で導入された回帰バグで、EnableRaisingEvents=trueのままイベント配信が停止する問題を解決します。
@jkoritzinsky ・ GitHub ・ area-ILTools-coreclr
managed ilasmをANTLRアクション駆動型パースに変換し、フルパースツリーの構築を廃止することで、メモリ使用量と実行時間を大幅に削減しました。特に大規模なテストアセンブリ(HardwareIntrinsics AVX512、HugeArray)でメモリ効率が改善され、x86でのOOM問題を解決しています。また、ILAssemblerライブラリの公開API表面をref-assemblyコントラクトで制限し、ANTLR生成型を内部実装に留めました。
続きを読む
2026年10月01日 (49 PRs) うち Bot 7 件 この日のページ →
@lewing ・ GitHub ・ arch-wasm area-CodeGen-coreclr
WebAssembly ReadyToRun環境でのJIT回帰テスト3件の隔離を解除するPRです。これらのテストは例外処理(finallyブロック内の例外がハンドルされない問題)のため隔離されていましたが、#134979で修正された後の復元となります。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITコンパイラ内で参照されていない未使用のヘルパー関数やコードを削除するクリーンアップPRです。浮動小数点演算、レイアウト、ビットベクトル、スコープ、コード生成関連の未使用ヘルパーと、無効化されたEH正規化コードを削除します。アクティブな動作には影響を与えません。
@maraf ・ GitHub ・ documentation area-ReadyToRun
Crossgen2タスクのドキュメント化。SDK内に複製されているタスクについて、半同期状態を保つ必要があることを明確にするためのコメント追加。
@radekdoulik ・ GitHub ・ arch-wasm area-Infrastructure
CoreCLR browser-wasm向けのネイティブリリンク機能を検証するため、Wasm.Build.Tests内の23メソッドでMono専用カテゴリを縮小し、ランタイム対応のテストデータを有効化 しました。既存のMonoテスト入力は保持し、プロダクトコードは変更しません。有効化されたカバレッジには、P/Invoke ABI、ネイティブライブラリ名、インバリアント国際化/タイムゾーン、Bug49588リリンク回帰、テンプレートmarshal-IL生成、メイン引数、サテライトリソース、Blazorシナリオ、インクリメンタルネイティブリビルドなどが含まれます。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-Build-mono os-wasi
WASI ランタイムパックのネイティブリンク入力(.a ファイル、.wit ファイル、corerun など)が、アプリの bin と publish 出力ディレクトリに不要にコピーされていた問題を修正します。これらのファイルはリンク時に $(MicrosoftNetCoreAppRuntimePackRidNativeDir) から読み込まれるため、出力ディレクトリのコピーは使用されていません。新しい _WasiRemoveRuntimePackLinkInputs ターゲットが ResolveRuntimePackAssets 後に実行され、不要なネイティブアセットを RuntimePackAsset と ReferenceCopyLocalPaths から削除します。
続きを読む
@lewing ・ GitHub ・ area-GC-coreclr
マルチスレッド非対応のブラウザ/WASI環境において、bestfit-finalizeテストがファイナライザー枯渇によるOOMを発生させる問題に対する回避策です。ホストイベントループで実行されるファイナライザーが、同期的なメモリ割り当てループによってスターベーション状態に陥るため、テスト内で定期的にGC.WaitForPendingFinalizers()を呼び出してファイナライザーをドレインします。
続きを読む
@EgorBo ・ GitHub ・ area-Meta
CoreLibの複数の静的コンストラクタと静的読み取り専用フィールドを削除し、RVAバッキングされたReadOnlySpan<T>プロパティ、定数、またはJITで折り畳み可能なプロパティに変換することで、スタートアップ時の割り当てと初期化オーバーヘッドを削減するもの。
@lewing ・ GitHub ・ arch-wasm area-Build-mono os-wasi
WASI SDK 34.0 とwasmtime 49.0.1 への更新。主な目的は、WebAssembly/wasi-libc#861 で報告されたpread関数の未初期化メモリアクセスバグを修正すること。また、WASI 0.2.12 で導入されたwasi:cli/exit exit-with-codeを活用して、プロセス終了時に実際の終了コードを直接返すように改善。
@EgorBo ・ GitHub ・ area-System.Globalization reduce-unsafe
UTF-8浮動小数点解析のOrdinal.EqualsIgnoreCaseUtf8実装を、ベクトル化されたUnsafeコードから安全なスパンベースコードに置き換えました。ASCII高速パスは8バイト単位での比較を行い、非ASCII文字についてはRuneループでフォールバックします。これにより、特にNaN/Infinity記号のマッチング処理で大幅なパフォーマンス向上が実現されました。
@lewing ・ GitHub ・ arch-wasm area-CodeGen-coreclr
WebAssembly上で16バイト構造体がTYP_SIMD16レジスタ型として扱われるよう改善するもの。従来はWasm向けにこの最適化が除外されていたため、Vector128<T>をラップする構造体が戻り値として返される際に不要な一時変数経由でのスピルが発生していました。本変更により、Wasm上でも他のSIMD対応ターゲットと同じく16バイト構造体レイアウトでTYP_SIMD16が使用されるようになります。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-CodeGen-coreclr
WebAssembly環境で構造体の戻り値をスピル処理する際、GetReturnTypeDesc()がnullptrを返すことによるnull参照逆参照のバグを修正しました。WebAssemblyはFEATURE_MULTIREG_RETを0で定義しており、マルチレジスタ戻り値が非サポートのため、オフセット0を使用する処理に修正しています。
@lewing ・ GitHub ・ arch-wasm area-CodeGen-coreclr
WebAssembly JITでfinallyブロックを呼び出す際に、呼び出し元の関数がアンワインド可能(unwindable)フレームとしてマークされていなかった問題を修正しました。genCallFinallyがensureCurrentFuncIsUnwindable()を呼び出すようにすることで、finallyからの例外スロー時に正しくスタックアンワインドできるようにします。
修正前は、finallyが唯一の呼び出しであった場合にプロローグでR2R関数テーブルインデックスが格納されず、finallyが例外をスロー時にスタックウォーク時に古い値を読み込んでいました。その結果、例外が呼び出し元のcatchブロックに到達せず、ハンドルされない例外として報告されていました。
続きを読む
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JITコンパイラのスイッチ文の折り畳み処理においてプロファイル更新時の重み計算にバグが存在していました。複数のケースターゲットが同じFlowEdgeを共有する場合、各ジャンプテーブルスロット毎に対象重みを減少させると、同じエッジ重みが複数回減算されていました。本修正では、ユニークな後続エッジ毎に重みを1回のみ減少させることで問題を解決します。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JIT コンパイラの fgMorphCall で、stelem.ref 呼び出しの変換後に GC safe point マークを設定するタイミングを修正しました。従来は user call の段階でマークされていたため、プレーンストアまたはヘルパー呼び出しに変換された後も stale フラグが残り、GC ポーリングのない呼び出し不在ループが生じていました。
@EgorBo ・ GitHub ・ area-CodeGen-coreclr
JIT最適化において、ファイナライザーを持つオブジェクトの割り当てを含む処理が不適切にホイストされることを防ぐ変更です。割り当て呼び出しの観測可能な副作用を、後続のスロー式に対する順序バリアとして扱うことで、メモリ安全性を確保します。
@jkotas ・ GitHub ・ area-Infrastructure
最新のMSVCプレビュー版がポインタからboolへの暗黙的な型変換について警告を出すため、ビルドエラーを修正するPRです。
@dhartglassMSFT ・ GitHub ・ area-CodeGen-coreclr
32ビットターゲットでのフォワード置換時のJITアサーション失敗を修正しました。32ビットではint32がアドレス型と正規化型の両方として機能するため、アドレス式を期待するコードにキャスト・ノードが渡される可能性がありました。
@lewing ・ GitHub ・ arch-wasm area-Infrastructure-coreclr os-browser
browser_wasm プラットフォームの ReadyToRun (R2R) コンパイルされたコードに対する priority-1 テストを実行するため、runtime-coreclr outerloop パイプラインに新しい R2R_CG2 ビルド レグを追加します。これにより、browser での完全な R2R 実行時のテスト カバレッジが向上し、R2R 固有の問題の検出が可能になります。
@lewing ・ GitHub ・ arch-wasm area-System.IO os-wasi
WASI環境でFile.CopyとFileInfo.CopyToがファイルデータのコピー後にIOException: Function not implementedをスローする問題を修正します。原因は、WASIのfchmodがスタブ実装(常にENOSYSを返す)であるのに対し、コピー処理がメタデータのコピーに失敗した場合に例外をスローしていたことです。本修正により、WASI上でのメタデータコピーをベストエフォート化し、パーミッションコピーをスキップし、タイムスタンプコピーの失敗を許容するようにしました。
続きを読む
@EgorBo ・ GitHub ・ area-System.Runtime reduce-unsafe
CoreLibおよび各ライブラリのホットパスにおけるunsafeなポインタ操作を、安全なSpan API、インデックスアクセス、SIMD APIに置き換えるリファクタリング。WebSocketのマスキング、バイナリ操作、バッファ検索などの複数の低レイヤーコンポーネントで unsafe コードを削減し、型安全性を向上させます。
@Copilot ・ GitHub ・ area-CodeGen-coreclr
R2R/NativeAOT共有ジェネリックコード内で、JITが共変配列ストア検証を誤ってスキップしていた問題を修正。G<object>をG<string>[]に格納できてしまう不正な操作が、正しくArrayTypeMismatchExceptionをスロー するようになります。
public sealed class G<T> { }
static void Test<T, U>(G<T>[] arr, G<U> val)
{
object[] o = arr;
o[0] = val; // Test<string, object>: ArrayTypeMismatchExceptionをスロー
}
続きを読む
@lateralusX ・ GitHub ・ area-Codegen-JIT-mono
Mono AMD64コード生成において、符号付き32ビット即値の範囲を超える定数を含むアドレス加算の処理を修正しました。値型のロード/ストア分解時に大きな配列インデックスでアクセスする場合に発生していた問題を解決します。
修正前は以下の問題が発生していました:
AOT コンパイル時のADDエミット時にアサーション失敗
JITのピープホール最適化パスでLEA命令に変換される際に変位が切り詰められていた
修正後は、オーバーサイズの定数をOP_I8CONSTで実体化し、ピープホール最適化とレジスタ割り当て前のロアリング段階でレジスタ間のOP_LADDを使用します。即値でエンコード可能な加算は変わりません。
続きを読む
@jakobbotsch ・ GitHub ・ area-CodeGen-coreclr
ローカル変数の出現箇所をスキャンする抽象メカニズムとして、LocalsTreeListのビジター実装を導入するリファクタリングです。将来的にGT_STORE_LCL_VARSが導入される際に、呼び出し元での変更を最小限に抑え、ビジター自体の変更のみで対応できるようにする目的です。
@radekdoulik ・ GitHub ・ arch-wasm area-Infrastructure
WebAssembly用の完全なトリミング済みCoreCLR ReadyToRun (R2R)ライブラリテストレーンを、スケジュール済みのruntime-extra-platformsパイプラインからruntime-libraries-coreclr outerloopパイプラインへ移行します。このテストレーンはLinuxで実行され、既存のブラウザWASM解釈器アウターループレーン同様にtestScope: allを使用しながら、トリミングとR2R公開を保持します。
続きを読む
@Copilot ・ GitHub ・ area-CodeGen-coreclr
共有ジェネリック型の入れ子Enum(例:C<string>.EとC<object>.E)において、Enum.Equalsが異なるランタイム型にもかかわらず正規ハンドルが一致することで誤った等値判定を行う問題を修正しました。JITがペイロード比較へのfolding前に共有インスタンス型を拒否するガードロジックを追加し、Enum.HasFlagの既存ガードと一貫させています。
@janvorli ・ GitHub ・ area-GC-coreclr
vxsort のベクトル化パーティションアルゴリズムにおいて、左側の読み込みポインタ非整列時の一時バッファサイズ計算が負の値になるバグを修正しました。GC背景スレッドがメモリアクセス違反でクラッシュする問題(#86548 )の根本原因であり、本修正で解決します。
@dhartglassMSFT ・ GitHub ・ area-CodeGen-coreclr
JIT のコピープロパゲーション最適化において、OptRepeat 時に EH (例外処理) リヴネス情報の再計算後、enregisterable ローカル変数が GT_LCL_FLD で不正に使用される問題を修正。lvDoNotEnregister==false なローカル変数を GT_LCL_FLD へコピープロパゲートすることを禁止することで解決。
@davidwrighton ・ GitHub ・ area-VM-coreclr
CoreCLRのメタデータAPI実装をレガシーな公開インターフェース(IMetaDataTables、IMetaDataEmitなど)から内部インターフェース(IMDInternalImport、IMDInternalEmit)へ移行する包括的なリファクタリング。プロファイラーが無効な環境(特にWebAssembly)ではメタデータ永続化、検査用インターフェース、未使用のメタデータ操作を削除し、バイナリサイズを大幅削減します。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-ReadyToRun os-wasi
WASIのComposite ReadyToRun(R2R)イメージの所有者名をcomposite-r2r.wasmから<entry>.r2r.wasm(メインアセンブリ名)に統一する変更です。これによってWASIはブラウザComposite実装と同じ命名規約を採用し、SDK移行時の二重管理を回避します。Composite所有者名はクロスジェン2により書き込まれたファイル名が唯一の権威となり、WASIホストはこの名前をバッファに記録して、要求されたCompositeが一致する場合のみ提供します。
続きを読む
@max-charlamb ・ GitHub ・ area-Diagnostics-coreclr
createdumpツールをDACの依存関係から分離し、PALとリモートアンワインド機能を直接Unix createdump実行可能ファイルにリンクするようにリファクタリングしました。これにより、createdumpはlibmscordaccoreを経由せずにPALサービスを直接初期化・終了できるようになり、DAC PAL転送レイヤーと重複するローカルPAL APIは削除されています。
@tarekgh ・ GitHub ・ regression-from-last-release area-System.DateTime
DateTime.ToUniversalTime()がDST春時間変化による無効な時刻(DST gap)に対して誤った結果を返していた回帰を修正しました。無効なローカル時刻をUTC時刻に変換する際、UTC オフセットを加算していたのを減算に修正することで、正確な変換結果を実現します。
例:W. Europe標準時で02:30が03:30Zではなく01:30Zに正しく変換されるようになりました。
続きを読む
@kkokosa ・ GitHub ・ area-GC-coreclr
Segment GCにおいて、Gen0メモリ計算がエフェメラルセグメント開始位置から測定されていたため、昇格されたGen1/Gen2オブジェクトが重複してカウントされ、GC.GetTotalMemory()の戻り値が過大報告される問題を修正します。Gen0の実際の割り当て開始位置から測定するよう修正し、昇格されたオブジェクトを含む回帰テストを追加します。
@rzikm ・ GitHub ・ breaking-change area-System.Formats.Tar
TAR抽出時に宛先ディレクトリの存在を必須としていた動作をZIP抽出と統一し、存在しない宛先への抽出をサポートするようにしました。8つのオーバーロード(同期/非同期、ファイル/ストリーム入力、bool overwriteFiles/TarExtractOptions)全てで宛先の自動作成が可能になります。空のアーカイブの場合は遅延ディレクトリ作成の動作を維持します。
@Copilot ・ GitHub ・ area-Tracing-coreclr
NativeAOT の EventPipe で発生していた use-after-free バグを修正します。EP_YIELD_WHILE マクロがno-opだったため、EventPipe リーダーがバッファを消費・解放する際にライターがまだそのバッファを使用している状態が発生していました。
本修正では、条件を再チェックするループでライターの同期を復元し、バッファ受け渡し時とセッションシャットダウン時の待機を機能させます。また、PalSwitchToThread に基づく NativeAOT アダプタヘルパーを追加し、リーダーの待機中にライターが進行できるようにします。
続きを読む
@davidwrighton ・ GitHub ・ area-ReadyToRun
WebAssembly ReadyToRun生成時のデバッグ情報出力を設定可能にする機能を追加しました。新しい --wasm-debug-info Crossgen2オプションで、デバッグ情報の出力形式を none、name、symbol-map、all、またはそれらの組み合わせで指定できます。デフォルトは既存の name セクション保持形式を維持し、Emscripten互換の .symbols サイドカーファイルを出力します。
続きを読む
@jkoritzinsky ・ GitHub ・ area-Interop-coreclr
.NET 11のリグレッションを修正します。クローズド型のジェネリック構造体をフィールドとして持つ非ジェネリック構造体が、組み込みの逆P/Invoke マーシャリング中に失敗していた問題に対応します。
内部構造体マーシャラーが公開API Marshal.SizeOf<T>() を呼び出していましたが、このメソッドのジェネリック型制限が既存のフィールドマーシャリング互換性より厳密だったため、ArgumentException がスローされていました。マーシャラーをCoreClrの内部サイズヘルパーを使用する実装に変更し、既存の列挙型処理と公開API制限を維持しました。
続きを読む
@dhartglassMSFT ・ GitHub ・ area-CodeGen-coreclr
JITコンパイラがo is int || o is uint || o is longのような条件式で条件付き比較(CCMP)最適化を見逃していた問題を修正します。テイルデュプリケーション(tail duplication)ヒューリスティックと前方代入(forward substitution)を拡張し、ローカル変数間のコピーを経由した比較を最適化できるようにしました。
@caraioniurie47 ・ GitHub ・ area-System.Net.Security community-contribution
OpenSSL 1.1でTLS 1.3のポストハンドシェイク認証が提供されていない場合、NegotiateClientCertificateAsyncが正しくエラーコードを解析できず例外をスローしていた問題を修正。OpenSSL 3とOpenSSL 1.1のエラーコードレイアウトの違い(lib << 23 | reason vs lib << 24 | func << 12 | reason)に対応し、ランタイム時にロードされたOpenSSLのバージョンに応じた正しい解析を実装。
続きを読む
@lewing ・ GitHub ・ arch-wasm area-Host
CoreCLR browser-WASM環境でWebCIL有効時のComposite ReadyToRun (R2R)公開を実装しました。Compositeはオプトイン であり、デフォルトのアセンブリ単位R2Rモードは変更されません。Composite所有者(<entry>.r2r.wasm)を静的Webアセットとして公開し、ローダーが初期化前にロードします。コンポーネントスタブはTPA(Trust Path Assembly)に保持され、Composite/per-assemblyモード切り替え時の無効化とスタブの整理を実装しています。
続きを読む
@lewing ・ GitHub ・ arch-wasm tenet-performance area-ReadyToRun
Browser-Wasm ReadyToRun環境でデリゲートコンストラクタの最適化を有効化します。これまでWasm ReadyToRunは動的に生成されるREADYTORUN_DELEGATE_CTORヘルパーを使用できず、インタープリタを通じた低速な実行時実装を呼び出していました。本変更により、WasmはJITと同じGetDelegateCtor変換パスを使用し、Crossgen2がコンテキストに応じてDelegate.CtorClosedまたはDelegate.DelegateConstructを選択します。
続きを読む
@maximmenshikov ・ GitHub ・ area-System.Security community-contribution
OpenSSL 3.5との互換性問題を修正するためのPull Requestです。pal_hmac.cがpthread_once_tとPTHREAD_ONCE_INITを使用していながら、pthread.hを直接インクルードしていませんでした。OpenSSL 3.5ではOpenSSLヘッダがpthread.hを引き込まなくなったため、コンパイルエラーが発生していました。修正はpthread.hを直接インクルードすることで、既に同じアプローチを採っているpal_evp.c、opensslshim.c、pal_bio.cと統一します。
続きを読む
@rzikm ・ GitHub ・ area-System.Net.Security breaking-change
このPRは、SslStreamがTLSセッション再開時の証明書再検証動作を変更します。再開(短縮)ハンドシェイク中、ピアは証明書を再送信せず、その身元は元のセッションチケット/セッションIDを作成した完全ハンドシェイク時に確立・検証済みです。デフォルトでは、再開された初期 ハンドシェイク時にチェーン構築とユーザー検証コールバックをスキップし、OpenSSLやSChannelなどの標準TLSスタックの動作に合わせます。AppContext設定System.Net.Security.RevalidateCertificateOnTlsResumeで従前の動作に戻すことができます。
続きを読む