Skip to content

Update roslyn to 5.9.0-1.26308.3#9403

Open
davidwengier wants to merge 3 commits into
dotnet:mainfrom
davidwengier:update/roslyn-5-9-0-1-26308-3
Open

Update roslyn to 5.9.0-1.26308.3#9403
davidwengier wants to merge 3 commits into
dotnet:mainfrom
davidwengier:update/roslyn-5-9-0-1-26308-3

Conversation

@davidwengier

Copy link
Copy Markdown
Member

View Complete Diff of Changes

  • Unsafe evolution: propagate unsafe context to constructor initializer (PR: #83969)
  • Parameterize DartLab templates repository alias (PR: #84037)
  • Fix frontmatter syntax in Compiler.instructions.md (PR: #84032)
  • Add baseline availability status to HTML completion tooltips (PR: #84054)
  • Fix Razor breakpoint placement (PR: #84029)
  • Fix a number of helix issues (PR: #84039)
  • Use xsd:anyURI type to detect external completion instead of vs:preferredextensions (PR: #84033)
  • Add formatting tests for code blocks above markup (PR: #84027)
  • Move Razor docs under docs (PR: #84024)
  • Add test to demonstrate adding using for inject directives works (PR: #84026)
  • Fix incremental build in Microsoft.Build.Tasks.CodeAnalysis.UnitTests (PR: #84016)
  • Remove unneeded logging (PR: #84023)
  • Convert copilot-instructions to AGENTS.md (PR: #84022)
  • SourceMemberMethodSymbol.IsMetadataVirtual should force complete declaring type when queried by a different module (PR: #84013)
  • Free pooled objects across cancellation exceptions (PR: #83875)
  • Bump Debugger.Contracts to 18.3.0-beta.26277.4 (PR: #84018)
  • Enable parallel builds in the LSP when loading projects (PR: #83982)
  • Fix Razor diagnostics exception when HTML diagnostic range exceeds SourceText bounds (PR: #84002)
  • Use MEF services in VS Code cohost tests (PR: #83986)
  • Implement runtime async support for dynamic (PR: #83713)
  • Remove IDynamicFileInfoProvider and related code (PR: #83928)
  • Add IAsyncLifetime overhead adjustment to test scheduling (PR: #83915)
  • Move a couple of helpers to the remote project (PR: #83990)
  • Unsafe evolution: consolidate reserved attributes (PR: #83908)
  • Fix rename in VS Code from a C# document (PR: #83971)
  • Remove invalid casts in PairedExtensionOperatorSignatureComparer (PR: #83934)
  • Remove the state from MSBuildDiagnosticLogger (PR: #83977)
  • Unions: not pattern is applied to the incoming value itself (PR: #83904)
  • Complete server shutdown when mutex is closed (PR: #83921)
  • Fix some missing attributes on partial async and iterator methods (PR: #83790)
  • Unsafe evolution: safe/unsafe externs (PR: #83661)
  • Use params ImmutableArray<T> on all applicable public APIs. (PR: #83858)
  • Unsafe evolution: avoid unnecessary diagnostics on params collection declarations (PR: #83641)
  • Cache Razor cohost MEF setup across tests (PR: #83936)
  • Consolidate Linked Editing Range up to its callers (PR: #83956)
  • Consolidate Semantic Tokens code up to where it should be (PR: #83955)
  • Consolidate Diagnostics code up into Remote.Razor (PR: #83951)
  • Consolidate Rename code up into Remote.Razor (PR: #83950)
  • Consolidate Document Symbols code up into Remote.Razor (PR: #83949)
  • Consolidate Folding Ranges code up into Remote.Razor (PR: #83948)
  • Consolidate Spell Check code up into Remote.Razor (PR: #83947)
  • Per server workspace and project factories (PR: #83857)
  • Fix marketplace name for dotnet/skills (PR: #83961)
  • Only add reference counts on CodeLens elements that are supported (PR: #82641)
  • [main] Update dependencies from dotnet/arcade (PR: #83941)
  • Closed classes: add a few interface matching tests (PR: #83940)
  • Fix x86 test host OOM in TemporaryStorageService (PR: #83952)
  • Change insertionCreateDraftPR to false (PR: #83958)
  • Allow running DartLab as VS test gate (PR: #83690)
  • Remove ExternalAccess.Razor and give Razor deeper IVT to Roslyn (PR: #83879)
  • Remove catch from FBA fuzz test (PR: #83820)
  • Move cohost handlers from ExternalAccess.Razor to Razor (PR: #83880)
  • Empty and Remove ExternalAccess.Razor (PR: #83920)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@davidwengier davidwengier requested a review from a team as a code owner June 8, 2026 22:45
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Comment thread CHANGELOG.md Outdated
Co-authored-by: David Wengier <david.wengier@microsoft.com>
@davidwengier

Copy link
Copy Markdown
Member Author

All of the C# legs are failing, so looks like a real bug. Copilot had this to say:

I found the likely low-risk mitigation: the only LSP parallelism knob is the ProducerConsumer.RunParallelAsync in LanguageServerProjectLoader; serializing that path would specifically revert the risky behavior while preserving the rest of the build-host refactor.The CI failures look like a real Roslyn regression, but not a completion-provider bug.

The common failure is that the LSP sometimes loads app.csproj without framework metadata references after Roslyn’s recent parallel project-loading changes. In the failing completion case, completion.cs is correctly found in Host; project app (net8.0), but the immediately preceding C#.log project-load entry for app.csproj has source/analyzer files and no metadata reference line, so symbols like System.Console can’t bind. That also explains the other failures: go-to-definition can’t navigate to Console, semantic tokens classify framework identifiers incorrectly, diagnostics/hints lose semantic context, and completion doesn’t offer Console.

Most likely culprit is dotnet/roslyn#83982:

  • removed the global ProjectBuildManager semaphore
  • enabled parallel LSP project loading via ProducerConsumer.RunParallelAsync
  • raised LSP build-host maxNodeCount

The logs show a batch where lib, app, and test are loaded concurrently; one project sometimes gets full references while another gets incomplete command-line/reference data. A low-risk mitigation would be to serialize the LSP project-load loop again, rather than changing completion.

I'm guessing "just serialize project loading" is probably not the nuanced solution we want here. Thoughts @jasonmalinowski or @dibarbet ? Do we need to change the tests on this side to wait for a new/better signal, or is this a real product bug being discovered?

@dibarbet

dibarbet commented Jun 9, 2026

Copy link
Copy Markdown
Member

I'm guessing "just serialize project loading" is probably not the nuanced solution we want here. Thoughts @jasonmalinowski or @dibarbet ? Do we need to change the tests on this side to wait for a new/better signal, or is this a real product bug being discovered?

I think it could be a product bug, and definitely needs a server side fix. The tests wait on this - https://github.com/dotnet/roslyn/blob/576f18b3e54f0511c2fc93a2b20d2762148b688b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/HostWorkspace/LanguageServerProjectSystem.cs#L94

Possibly the parallel load is doing async work that isn't being tracked, or the parallel load is simply failing to fully load the projects. @jasonmalinowski would you mind taking a look?

@JoeRobich

Copy link
Copy Markdown
Member

This insertion PR is for the build just prior to where the build was parallelized #9404

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants