Open
Description
Thank you for the bug report
- I am using the latest version of
lsp-mode
related packages. - I checked FAQ and Troubleshooting sections
- You may also try reproduce the issue using clean environment using the following command:
M-x lsp-start-plain
Bug description
I'm trying to use the new Roslyn language server. After the language server starts, if I unfocus the Emacs frame and switch to another window, and then switch back, the Roslyn language server will crash immediately with a C# stack trace. I do think this is a Roslyn bug, but this doesn't seem to happen with VSCode so I think lsp-mode is sending something different/unexpected.
Steps to reproduce
- Have .NET SDK 8 installed (either system-wide or via something like asdf)
- Create a basic solution/program with the
dotnet
CLI M-: (setq lsp-roslyn-package-version "5.0.0-1.25277.1")
M-x lsp-install-server RET roslyn RET
- Visit a C# file, let LSP load
- Unfocus Emacs frame
- Refocus Emacs frame
- Crash
Expected behavior
No crashes
Which Language Server did you use?
lsp-roslyn (microsoft.codeanalysis.languageserver.linux-x64
version 5.0.0-1.25277.1
)
OS
Linux
Error callstack
Not a Lisp backtrace but this is what Roslyn language server produces.
[textDocument/didChange] [LSP] System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.CodeAnalysis.LanguageServer.ProtocolConversions.RangeToLinePositionSpan(Range range) in /_/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs:line 312
at Microsoft.CodeAnalysis.LanguageServer.ProtocolConversions.RangeToTextSpan(Range range, SourceText text) in /_/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs:line 316
at Microsoft.CodeAnalysis.LanguageServer.ProtocolConversions.ContentChangeEventToTextChange(TextDocumentContentChangeEvent changeEvent, SourceText text) in /_/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs:line 357
at System.Linq.Enumerable.IteratorSelectIterator`2.MoveNext()
at System.Collections.Immutable.ImmutableArray`1.Builder.AddRange(IEnumerable`1 items)
at Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1.AddRange(IEnumerable`1 items) in /_/src/Dependencies/PooledObjects/ArrayBuilder.cs:line 654
at Roslyn.Utilities.EnumerableExtensions.SelectAsArray[TSource,TResult](IEnumerable`1 source, Func`2 selector) in /_/src/Dependencies/Collections/Extensions/IEnumerableExtensions.cs:line 371
at Microsoft.CodeAnalysis.LanguageServer.Handler.DocumentChanges.DidChangeHandler.GetUpdatedSourceText(TextDocumentContentChangeEvent[] contentChanges, SourceText text) in /_/src/LanguageServer/Protocol/Handler/DocumentChanges/DidChangeHandler.cs:line 70
at Microsoft.CodeAnalysis.LanguageServer.Handler.DocumentChanges.DidChangeHandler.HandleRequestAsync(DidChangeTextDocumentParams request, RequestContext context, CancellationToken cancellationToken) in /_/src/LanguageServer/Protocol/Handler/DocumentChanges/DidChangeHandler.cs:line 33
at Microsoft.CommonLanguageServerProtocol.Framework.QueueItem`1.StartRequestAsync[TRequest,TResponse](TRequest request, TRequestContext context, IMethodHandler handler, String language, CancellationToken cancellationToken) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs:line 191
[LSP] System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.CodeAnalysis.LanguageServer.ProtocolConversions.RangeToLinePositionSpan(Range range) in /_/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs:line 312
at Microsoft.CodeAnalysis.LanguageServer.ProtocolConversions.RangeToTextSpan(Range range, SourceText text) in /_/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs:line 316
at Microsoft.CodeAnalysis.LanguageServer.ProtocolConversions.ContentChangeEventToTextChange(TextDocumentContentChangeEvent changeEvent, SourceText text) in /_/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs:line 357
at System.Linq.Enumerable.IteratorSelectIterator`2.MoveNext()
at System.Collections.Immutable.ImmutableArray`1.Builder.AddRange(IEnumerable`1 items)
at Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1.AddRange(IEnumerable`1 items) in /_/src/Dependencies/PooledObjects/ArrayBuilder.cs:line 654
at Roslyn.Utilities.EnumerableExtensions.SelectAsArray[TSource,TResult](IEnumerable`1 source, Func`2 selector) in /_/src/Dependencies/Collections/Extensions/IEnumerableExtensions.cs:line 371
at Microsoft.CodeAnalysis.LanguageServer.Handler.DocumentChanges.DidChangeHandler.GetUpdatedSourceText(TextDocumentContentChangeEvent[] contentChanges, SourceText text) in /_/src/LanguageServer/Protocol/Handler/DocumentChanges/DidChangeHandler.cs:line 70
at Microsoft.CodeAnalysis.LanguageServer.Handler.DocumentChanges.DidChangeHandler.HandleRequestAsync(DidChangeTextDocumentParams request, RequestContext context, CancellationToken cancellationToken) in /_/src/LanguageServer/Protocol/Handler/DocumentChanges/DidChangeHandler.cs:line 33
at Microsoft.CommonLanguageServerProtocol.Framework.QueueItem`1.StartRequestAsync[TRequest,TResponse](TRequest request, TRequestContext context, IMethodHandler handler, String language, CancellationToken cancellationToken) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs:line 191
at Microsoft.CommonLanguageServerProtocol.Framework.QueueItem`1.StartRequestAsync[TRequest,TResponse](TRequest request, TRequestContext context, IMethodHandler handler, String language, CancellationToken cancellationToken) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs:line 246
at Microsoft.CodeAnalysis.LanguageServer.RoslynRequestExecutionQueue.WrapStartRequestTaskAsync(Task requestTask, Boolean rethrowExceptions) in /_/src/LanguageServer/Protocol/RoslynRequestExecutionQueue.cs:line 32
at Microsoft.CommonLanguageServerProtocol.Framework.RequestExecutionQueue`1.ProcessQueueCoreAsync[TRequest,TResponse](IQueueItem`1 work, IMethodHandler handler, RequestHandlerMetadata metadata, ConcurrentDictionary`2 concurrentlyExecutingTasks, CancellationTokenSource currentWorkCts, CancellationToken cancellationToken) in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/RequestExecutionQueue.cs:line 369
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 322
at Microsoft.CommonLanguageServerProtocol.Framework.RequestExecutionQueue`1.ProcessQueueAsync() in /_/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/RequestExecutionQueue.cs:line 274
Anything else?
Cleaned up/redacted lsp-log-io
log: bug.txt