Skip to content

C# LSP Crashing when using Roo Code VSCode Extension due to URIFormatException #1696

@bitcode

Description

@bitcode

Which version of the app are you using?

3.8.6

Which API Provider are you using?

OpenRouter

Which Model are you using?

Claude 3.7 Sonnet

What happened?

Issue Description:

I'm experiencing frequent crashes of the C# Language Server (LSP) in VSCode when using the Roo Code extension. This significantly impacts the coding experience, as Roo Code's functionality is greatly enhanced when the LSP is running and providing real-time error detection and code analysis.

The LSP crashes with a System.UriFormatException: Invalid URI: The Uri string is too long. error. This seems to occur intermittently, and I haven't been able to pinpoint the exact trigger. It might be related to Roo Code's file editing or saving actions, but I'm unsure.

Expected Behavior:

The C# LSP should remain stable and functional while using Roo Code, allowing Roo Code to interact with it for real-time feedback.

Actual Behavior:

The C# LSP crashes, resulting in loss of IntelliSense, code completion, and other language features. Roo Code's ability to display errors and warnings is also diminished.

Install the Roo Code and C# VSCode extensions (including C# Dev Kit).

Open a C# project.

Use Roo Code to generate or modify code.

Observe the LSP crashing after some time.

Additional Information:

VSCode Version: 3.8.6

Version: 1.98.2 (user setup)
Commit: ddc367ed5c8936efe395cffeec279b04ffd7db78
Date: 2025-03-12T13:32:45.399Z
Electron: 34.2.0
ElectronBuildId: 11161602
Chromium: 132.0.6834.196
Node.js: 20.18.2
V8: 13.2.152.36-electron.0
OS: Windows_NT x64 10.0.22631

Roo Code Extension Version:

C# Extension Version: ms-dotnettools.csharp 2.63.32

.NET SDK Version: 8.0.10

OS: Windows 11

Log Output:

Here's a sanitized log output from VSCode. I've removed the date/time and my username to protect my privacy, but the core error messages are preserved.

[info] Locating .NET runtime version 8.0.10
[info] Dotnet path: C:\Program Files\dotnet\dotnet.exe
[info] Activating C# + C# Dev Kit + C# IntelliCode...
[info] [stdout] {"pipeName":"\\\\.\\pipe\\b32d98a5"}

[info] received named pipe information from server
[info] client has connected to server
[info] [Info  - 6:01:42 AM] [Program] Language server initialized
[info] [Info  - 6:01:45 AM] [WorkspaceProjectFactoryService] Project C:\Users\username\AudioWindowHighlighter\AudioWindowHighlighter.csproj loaded by C# Dev Kit
[info] [Error - 6:10:40 AM] [LanguageServerHost] System.UriFormatException: Invalid URI: The Uri string is too long.
   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind, UriCreationOptions& creationOptions)
   at System.Uri..ctor(String uriString)
   at Roslyn.LanguageServer.Protocol.DocumentUriConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/LanguageServer/Protocol/Protocol/Converters/DocumentUriConverter.cs:line 17
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
   at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo`1 jsonTypeInfo, Nullable`1 actualByteCount)
   at System.Text.Json.JsonSerializer.Deserialize[TValue](JsonElement element, JsonSerializerOptions options)
   at Microsoft.CommonLanguageServerProtocol.Framework.SystemTextJsonLanguageServer`1.DeserializeRequest[TRequest](Object serializedRequest, RequestHandlerMetadata metadata) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/SystemTextJsonLanguageServer.cs:line 30
   at Microsoft.CommonLanguageServerProtocol.Framework.QueueItem`1.TryDeserializeRequest[TRequest](AbstractLanguageServer`1 languageServer, RequestHandlerMetadata requestHandlerMetadata, Boolean isMutating, TRequest& request) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs:line 120
[info] [Error - 6:10:40 AM] [LanguageServerHost] System.UriFormatException: Invalid URI: The Uri string is too long.
   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind, UriCreationOptions& creationOptions)
   at System.Uri..ctor(String uriString)
   at Roslyn.LanguageServer.Protocol.DocumentUriConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/LanguageServer/Protocol/Protocol/Converters/DocumentUriConverter.cs:line 17
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
   at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo`1 jsonTypeInfo, Nullable`1 actualByteCount)
   at System.Text.Json.JsonSerializer.Deserialize[TValue](JsonElement element, JsonSerializerOptions options)
   at Microsoft.CommonLanguageServerProtocol.Framework.SystemTextJsonLanguageServer`1.DeserializeRequest[TRequest](Object serializedRequest, RequestHandlerMetadata metadata) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/SystemTextJsonLanguageServer.cs:line 30
   at Microsoft.CommonLanguageServerProtocol.Framework.QueueItem`1.TryDeserializeRequest[TRequest](AbstractLanguageServer`1 languageServer, RequestHandlerMetadata requestHandlerMetadata, Boolean isMutating, TRequest& request) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs:line 120
--- End of stack trace from previous location ---
   at Microsoft.CommonLanguageServerProtocol.Framework.AbstractLanguageServer`1.DelegatingEntryPoint.InvokeAsync(IRequestExecutionQueue`1 queue, Object requestObject, ILspServices lspServices, CancellationToken cancellationToken) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/AbstractLanguageServer.cs:line 204
   at Microsoft.CommonLanguageServerProtocol.Framework.SystemTextJsonLanguageServer`1.SystemTextJsonDelegatingEntryPoint.ExecuteRequestAsync(Nullable`1 request, CancellationToken cancellationToken) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/SystemTextJsonLanguageServer.cs:line 88
   at Microsoft.CommonLanguageServerProtocol.Framework.QueueItem`1.CreateRequestContextAsync[TRequest](IMethodHandler handler, RequestHandlerMetadata requestHandlerMetadata, AbstractLanguageServer`1 languageServer, CancellationToken cancellationToken)
   at Microsoft.CommonLanguageServerProtocol.Framework.RequestExecutionQueue`1.ProcessQueueCoreAsync[TRequest,TResponse](IQueueItem`1 work, IMethodHandler handler, RequestHandlerMetadata metadata, ConcurrentDictionary`2 concurrentlyExecutingTasks, CancellationTokenSource currentWorkCts, CancellationToken cancellationToken)
   at Microsoft.CommonLanguageServerProtocol.Framework.RequestExecutionQueue`1.InvokeProcessCoreAsync(IQueueItem`1 work, RequestHandlerMetadata metadata, IMethodHandler handler, MethodInfo methodInfo, ConcurrentDictionary`2 concurrentlyExecutingTasks, CancellationTokenSource currentWorkCts, CancellationToken cancellationToken) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/RequestExecutionQueue.cs:line 320
   at Microsoft.CommonLanguageServerProtocol.Framework.RequestExecutionQueue`1.ProcessQueueAsync() in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/RequestExecutionQueue.cs:line 272
[info] [Info  - 6:10:40 AM] Error processing queue, shutting down
[info] [Error - 6:10:40 AM] Workspace diagnostic pull failed.
[info] Canceled: Canceled
	at a.handleFailedRequest (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2172513)
	at a.handleFailedRequest (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:1171464)
	at c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2209923
	at async g.pullWorkspaceAsync (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2207231)
[info] [Error - 6:10:40 AM] Workspace diagnostic pull failed.
[info] Canceled: Canceled
	at a.handleFailedRequest (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2172513)
	at a.handleFailedRequest (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:1171464)
	at c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2209923
	at runNextTicks (node:internal/process/task_queues:60:5)
	at process.processImmediate (node:internal/timers:454:9)
	at async g.pullWorkspaceAsync (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2207231)
[info] [Error - 6:10:40 AM] Workspace diagnostic pull failed.
[info] Canceled: Canceled
	at a.handleFailedRequest (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2172513)
	at a.handleFailedRequest (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:1171464)
	at c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2209923
	at runNextTicks (node:internal/process/task_queues:60:5)
	at process.processImmediate (node:internal/timers:454:9)
	at async g.pullWorkspaceAsync (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2207231)
[info] [Error - 6:10:40 AM] Workspace diagnostic pull failed.
[info] Canceled: Canceled
	at a.handleFailedRequest (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2172513)
	at a.handleFailedRequest (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:1171464)
	at c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2209923
	at runNextTicks (node:internal/process/task_queues:60:5)
	at process.processImmediate (node:internal/timers:454:9)
	at async g.pullWorkspaceAsync (c:\Users\username\.vscode\extensions\ms-dotnettools.csharp-2.63.32-win32-x64\dist\extension.js:2:2207231)
[info] [Error - 6:10:40 AM] Client Microsoft.CodeAnalysis.LanguageServer: connection to server is erroring. Shutting down server.
[info] [Error - 6:10:40 AM] Client Microsoft.CodeAnalysis.LanguageServer: connection to server is erroring. Shutting down server.
[info] [Error - 6:10:40 AM] Request textDocument/diagnostic failed.
[info]   Message: write EPIPE
  Code: -32099
[info] [Error - 6:10:40 AM] Document pull failed for text document file:///c%3A/Users/username/AudioWindowHighlighter/Src/Audio/AudioSessionManager.cs
[info]   Message: write EPIPE
  Code: -32099
[info] [Error - 6:10:40 AM] Request textDocument/diagnostic failed.
[info]   Message: Server was requested to shut down.
  Code: -32000
[object Object]
[info] [Error - 6:10:40 AM] Document pull failed for text document file:///c%3A/Users/username/AudioWindowHighlighter/Src/Audio/AudioSessionManager.cs
[info]   Message: Server was requested to shut down.
  Code: -32000
[object Object]
[info] [Error - 6:10:40 AM] Request textDocument/diagnostic failed.
[info]   Message: Cannot call write after a stream was destroyed
  Code: -32099
[info] [Error - 6:10:40 AM] Document pull failed for text document file:///c%3A/Users/username/AudioWindowHighlighter/Src/Audio/AudioSessionManager.cs
[info]   Message: Cannot call write after a stream was destroyed
  Code: -32099
[info] [Error - 6:10:40 AM] Connection to server got closed. Server will not be restarted.
[info] [Error - 6:10:40 AM] Request textDocument/diagnostic failed.
[info]   Message: Cannot call write after a stream was destroyed
  Code: -32099
[info] [Error - 6:10:40 AM] Document pull failed for text document file:///c%3A/Users/username/AudioWindowHighlighter/Src/Audio/AudioSessionManager.cs
[info]   Message: Cannot call write after a stream was destroyed
  Code: -32099
[info] [Error - 6:10:40 AM] Stopping server failed
[info]   Message: Cannot call write after a stream was destroyed
  Code: -32099
[info] [Error - 6:10:40 AM] Stopping server failed
[info]   Message: Cannot call write after a stream was destroyed
  Code: -32099
[info] [Error - 6:10:40 AM] Stopping server failed
[info]   Message: Cannot call write after a stream was destroyed
  Code: -32099

Steps to reproduce

Unfortunately, I haven't been able to consistently reproduce the crash. However, it happens frequently when I am actively using Roo Code to generate code or make edits within a C# project.

Relevant API REQUEST output

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Issue - In ProgressSomeone is actively working on this. Should link to a PR soon.bugSomething isn't working

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions