[release/8.0] Merge release/8.0-staging changes#118763
Conversation
…ures test on CI runs (#117489) Co-authored-by: Jeremy Koritzinsky <jekoritz@microsoft.com> Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
….0-staging [automated] Merge branch 'release/8.0' => 'release/8.0-staging'
…ild 20250728.2 (#118128) Microsoft.DotNet.HotReload.Utils.Generator.BuildTool From Version 8.0.0-alpha.0.25330.2 -> To Version 8.0.0-alpha.0.25378.2 Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Backport of #117968 to release/8.0-staging
…protocol on macOS26. (#118213) Backport of #118120 * Add support for new startup handshake protocol over pipes instead of sempahores. * Remove NonBlocking runtime support. * Renames, logging and simplification. * Improve tracing. * Make open check non blocking. * Fold access into open calls and track ENOENT | ENOACCES * Review feedback. --------- Co-authored-by: lateralusX <lateralusx.github@gmail.com>
There was a problem hiding this comment.
Pull Request Overview
This PR merges changes from the release/8.0-staging branch into the release/8.0 branch, bringing in multiple fixes and improvements across different components of the .NET runtime.
Key changes include:
- Implementation of a pipe-based runtime event notification system as a fallback for macOS debugging issues
- Fixes to X509 certificate chain validation test logic
- Performance improvements in garbage collection card marking
Reviewed Changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/coreclr/pal/src/thread/process.cpp | Adds pipe-based runtime event notification system for macOS debugging with semaphore fallback |
| src/coreclr/gc/gc.cpp | Improves card clearing logic in garbage collection with feature-specific optimizations |
| src/libraries/System.Security.Cryptography/tests/X509Certificates/ChainTests.cs | Fixes certificate chain validation test to properly handle allowed status flags |
| src/libraries/System.Runtime.InteropServices/tests/LibraryImportGenerator.Tests/CollectionMarshallingFails.cs | Renames test method and adds CI skip attribute for memory-intensive test |
| eng/Versions.props | Updates Microsoft.DotNet.HotReload.Utils.Generator.BuildTool version |
| eng/Version.Details.xml | Updates dependency details for HotReload utils with new SHA |
| NuGet.config | Removes obsolete package source entries and adds new ones |
|
|
||
| do | ||
| { | ||
| bytesWritten = write(startupPipeFd, buffer + offset, bytesToWrite - offset); |
There was a problem hiding this comment.
The offset variable is declared at function scope but used within a local block scope. This could lead to incorrect behavior as offset is initialized to 0 at the top of the function but then reused for a different purpose in the read operation later.
| } | ||
| while ((bytesRead > 0 && offset < bytesToRead) || (bytesRead == -1 && errno == EINTR)); | ||
|
|
||
| if (offset == bytesToRead && event == (unsigned char)RuntimeEvent_Continue) |
There was a problem hiding this comment.
The variable offset is being reused for both write and read operations. Consider using separate variables (e.g., writeOffset and readOffset) to improve code clarity and prevent potential bugs.
| if (offset == bytesToRead && event == (unsigned char)RuntimeEvent_Continue) | |
| int readOffset = 0; | |
| do | |
| { | |
| bytesRead = read(continuePipeFd, buffer + readOffset, bytesToRead - readOffset); | |
| if (bytesRead > 0) | |
| { | |
| readOffset += bytesRead; | |
| } | |
| } | |
| while ((bytesRead > 0 && readOffset < bytesToRead) || (bytesRead == -1 && errno == EINTR)); | |
| if (readOffset == bytesToRead && event == (unsigned char)RuntimeEvent_Continue) |
|
|
|
/ba-g
|
Copilot will generate this