Skip to content

[pull] main from dotnet:main#470

Merged
pull[bot] merged 11 commits intoJuan48302:mainfrom
dotnet:main
Dec 9, 2025
Merged

[pull] main from dotnet:main#470
pull[bot] merged 11 commits intoJuan48302:mainfrom
dotnet:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Dec 9, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

vcsjones and others added 11 commits December 8, 2025 19:32
PQC was backported to 24H2, and CI picked that up in Windows update, so our version boundary test is failing. This adjusts the test to the correct version boundary.
Fix a recent regression in perfmaps caused by #116203
The fix changes fprintf usage in PerfMap::WriteLine to using
## Description

This PR fixes condition checks for Crossgen2 in AppleBuild.props.

```
The imported project "/__w/1/s/artifacts/bin/Crossgen2Tasks/Checked/net10.0/Microsoft.NET.CrossGen.props" was not found.
```
- Rename constants to use PascalCase instead of prefixed s_ names.
- Use constants instead of static readonly fields
- Use properties instead of static readonly fields for computed values.

[Diffs](MihuBot/runtime-utils#1599)
This is the first prototype of a Wasm object writer for crossgen that
*only* writes out method bodies. It builds the minimum module structure
which is needed to declare and export the module bodies so that the
resulting module can be loaded and method bodies can be called by an
external loader. I have tested the output with a simple JavaScript
loader that instantiates the module and calls one of the exports.

# What IS handled
Emitting simple method bodies from an assembly that have no relocations
or external dependencies of any kind.

# What is NOT handled
## Relocations and any metadata attached to compiled methods.
## R2R format envelope (the plan is to embed this in the data section in
a future PR)
R2R metadata is currently unused.
## Signature generation to meet ABI requirements
Right now, there is a single `i32 -> i32` signature which is used as a
placeholder for any method. Later work will need to build support for
generating and storing wasm-level type signatures for JIT compiled
methods.
## JIT Integration
Currently, the JIT is not called (I believe it will hit asserts on the
Wasm target until #121973 is in). Instead, a simple `(i32.const 0)
(return)` stub is emitted for any JIT calls.

---------

Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…tHostPolicy (#122212)

This package hasn't been the way we construct .NET apps since before
3.0. We currently check for it in the deps.json on startup and write it
out as a breadcrumb file for every app - we should be able to stop doing
this and avoid some unnecessary file I/O and allocations.
…runcation (#122293)

- [x] Understand the issue: High CPU due to excessive
YieldProcessorMeasurement
- [x] Identify the bug: Extra (unsigned int) cast at line 206 in
yieldprocessornormalizedshared.cpp
- [x] Remove the incorrect cast to fix time comparison
- [x] Build and test the fix
- [x] Run code review
- [x] Run security scan
- [x] Add parentheses to clarify operator precedence per review feedback

## Summary

Fixed high CPU utilization in .NET 10.0 by removing an incorrect
`(unsigned int)` cast that was causing YieldProcessorMeasurement to run
continuously instead of every 4 seconds. The variable
`s_previousNormalizationTimeMs` is declared as `int64_t` but was being
assigned with a truncated 32-bit value, leading to incorrect time
comparisons and excessive measurements.

Added parentheses around subtraction operations to make operator
precedence explicit.

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>High CPU utilization after update from net8 to
net10</issue_title>
> <issue_description><!--This is just a template - feel free to delete
any and all of it and replace as appropriate.-->
> 
> ### Description
> 
> After updating asp net core application from net 8 to net10 noticed
significantly increased CPU consumption. What is the reason for this?
> 
> <img width="1728" height="1072" alt="Image"
src="https://github.com/user-attachments/assets/654ab469-4ee8-440e-a34b-6a3136d9272f"
/>
> 
> <img width="1675" height="1074" alt="Image"
src="https://github.com/user-attachments/assets/f45dee2b-78db-4176-82c3-7988285d7516"
/>
> 
> <img width="1772" height="1075" alt="Image"
src="https://github.com/user-attachments/assets/48a4965e-4b8c-4413-a777-be099acce154"
/>
> 
> After the update, we noticed a significantly increased number of
garbage collections.
> 
> <img width="1280" height="308" alt="Image"
src="https://github.com/user-attachments/assets/876a0d63-d3c2-4a58-941f-111e4c587511"
/>
> 
> ### Configuration
> 
> Image: mcr.microsoft.com/dotnet/aspnet:10.0.0
> OS: Ubuntu 24.04
> Runtime: net10.0.0
> Architecture: x64
> 
> ServerGarbageCollection: true
> ConcurrentGarbageCollection: true
> GarbageCollectionAdaptationMode: Not specified
> </issue_description>
> 
> <agent_instructions>Delete the extra (unsigned) cast at
https://github.com/dotnet/runtime/pull/115408/files#diff-1c8c26a1e7f6ab4505c185d7ba09c8b95dbac6a5da98d424bef94520bf94cdaeR206
that leads to this bug </agent_instructions>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> <comment_new><author>@agocke</author><body>
> @jestonedev We would need a before/after trace to be sure. A CPU graph
alone doesn't give enough info to say which piece is spending more CPU.
Setting GCDynamicAdaptationMode to 0 would also help as an easy way to
determine if that's the cause.</body></comment_new>
> <comment_new><author>@jkotas</author><body>
> The YieldProcessorMeasurement counter looks way too high.
YieldProcessorMeasurement is done on finalizer thread, so the high
finalizerstart/stop is a side-effect of that.
> 
> There is something wrong with the scheduling of
YieldProcessorMeasurement</body></comment_new>
> <comment_new><author>@jkotas</author><body>
> > What is YieldProcessorMeasurement
> 
> The performance characteristics of processor yield instruction
(`pause` on Intel) varies a lot between processors. It can even change
while the process is running due to VM migrations in cloud.
YieldProcessorMeasurement is expected to be done occasionally (every 4
seconds at most) by the runtime to measure the current performance
characteristics of this instruction and retune the spinwaiting loops as
needed.</body></comment_new>
> <comment_new><author>@jkotas</author><body>
> Looks like a regression inroduced by
https://github.com/dotnet/runtime/pull/115408/files#diff-1c8c26a1e7f6ab4505c185d7ba09c8b95dbac6a5da98d424bef94520bf94cdaeR206</body></comment_new>
> </comments>
> 


</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

- Fixes #122280

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com>
Co-authored-by: agocke <515774+agocke@users.noreply.github.com>
This pull request updates the following dependencies

[marker]: <> (Begin:bfe6dacf-8231-4ea1-e2fe-08d962847885)
## From https://github.com/dotnet/hotreload-utils
- **Subscription**:
[bfe6dacf-8231-4ea1-e2fe-08d962847885](https://maestro.dot.net/subscriptions?search=bfe6dacf-8231-4ea1-e2fe-08d962847885)
- **Build**:
[20251124.1](https://dev.azure.com/dnceng/internal/_build/results?buildId=2846435)
([292099](https://maestro.dot.net/channel/8297/github:dotnet:hotreload-utils/build/292099))
- **Date Produced**: November 24, 2025 4:13:07 PM UTC
- **Commit**:
[92b850b157a46e9c4605b7ae76f5ada3e6856eb5](dotnet/hotreload-utils@92b850b)
- **Branch**:
[main](https://github.com/dotnet/hotreload-utils/tree/main)

[DependencyUpdate]: <> (Begin)

- **Dependency Updates**:
  - From [11.0.0-alpha.0.25528.1 to 11.0.0-alpha.0.25574.1][1]
     - Microsoft.DotNet.HotReload.Utils.Generator.BuildTool

[1]:
dotnet/hotreload-utils@1c8f1e3...92b850b

[DependencyUpdate]: <> (End)


[marker]: <> (End:bfe6dacf-8231-4ea1-e2fe-08d962847885)

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
main PR <!-- Link to PR if any that fixed this in the main branch. -->

# Description

Updates the Debian container image from `debian-12-gcc15-amd64` to
`debian-13-gcc15-amd64` across pipeline configuration and documentation.

**Modified files:**
- `eng/pipelines/common/templates/pipeline-with-resources.yml` -
Container definition and image reference
- `eng/pipelines/common/platform-matrix.yml` - Container name reference
in build matrix
- `docs/workflow/using-docker.md` - Documentation table entry

# Customer Impact

None. Internal build infrastructure update.

# Regression

No. This is not fixing a regression.

# Testing

Configuration change only. Will be validated when pipeline executes with
the new image.

# Risk

Low. Standard image upgrade following established pattern. The Debian 13
image with GCC15 is already available in the container registry.

# Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet
package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older
versions.

<!-- START COPILOT CODING AGENT SUFFIX -->



<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> On pipeline-with-resources.yml, Please update this image to the debian
13 variant. New tag: debian-13-gcc15-amd64
> 
>
https://github.com/dotnet/runtime/blob/main/eng/pipelines/common/templates/pipeline-with-resources.yml#L105-L106


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: richlander <2608468+richlander@users.noreply.github.com>
Wasm switches (`br_table`) have a default case, so take advantage of
this and stop peeling off the default case in lower.
@pull pull bot locked and limited conversation to collaborators Dec 9, 2025
@pull pull bot added the ⤵️ pull label Dec 9, 2025
@pull pull bot merged commit 59c16f2 into Juan48302:main Dec 9, 2025
1 check failed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants