Skip to content

NullReferenceException in PdbSourceDocumentLoaderService.cs line 130 #60908

@KirillOsenkov

Description

@KirillOsenkov

Version Used:
Roslyn from 17.1.0

Steps to Reproduce:

  1. decompile some code from a .dll that doesn't have the .pdb next to it

Expected Behavior:
should work

Actual Behavior:

System.NullReferenceException: Object reference not set to an instance of an object.
   at async Task<SourceFileInfo> Microsoft.CodeAnalysis.PdbSourceDocument.PdbSourceDocumentLoaderService.TryGetSourceLinkFileAsync(SourceDocument sourceDocument, Encoding encoding, TelemetryMessage telemetry, CancellationToken cancellationToken) in C:/Roslyn/src/Features/Core/Portable/PdbSourceDocument/PdbSourceDocumentLoaderService.cs:line 130
   at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(ref TStateMachine stateMachine)
   at Task<SourceFileInfo> Microsoft.CodeAnalysis.PdbSourceDocument.PdbSourceDocumentLoaderService.TryGetSourceLinkFileAsync(SourceDocument sourceDocument, Encoding encoding, TelemetryMessage telemetry, CancellationToken cancellationToken)
   at async Task<SourceFileInfo> Microsoft.CodeAnalysis.PdbSourceDocument.PdbSourceDocumentLoaderService.LoadSourceDocumentAsync(string tempFilePath, SourceDocument sourceDocument, Encoding encoding, TelemetryMessage telemetry, CancellationToken cancellationToken) in C:/Roslyn/src/Features/Core/Portable/PdbSourceDocument/PdbSourceDocumentLoaderService.cs:line 45
   at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(ref TStateMachine stateMachine)
   at Task<SourceFileInfo> Microsoft.CodeAnalysis.PdbSourceDocument.PdbSourceDocumentLoaderService.LoadSourceDocumentAsync(string tempFilePath, SourceDocument sourceDocument, Encoding encoding, TelemetryMessage telemetry, CancellationToken cancellationToken)
   at Task<MetadataAsSourceFile> Microsoft.CodeAnalysis.PdbSourceDocument.PdbSourceDocumentMetadataAsSourceFileProvider.GetGeneratedFileAsync(Workspace workspace, Project project, ISymbol symbol, bool signaturesOnly, bool allowDecompilation, string tempPath, CancellationToken cancellationToken)+(SourceDocument sd) => { } in C:/Roslyn/src/Features/Core/Portable/PdbSourceDocument/PdbSourceDocumentMetadataAsSourceFileProvider.cs:line 152
   at bool System.Linq.Enumerable+WhereSelectArrayIterator<TSource, TResult>.MoveNext()
   at new System.Linq.Buffer<TElement>(IEnumerable<TElement> source)
   at TSource[] System.Linq.Enumerable.ToArray<TSource>(IEnumerable<TSource> source)
   at async Task<MetadataAsSourceFile> Microsoft.CodeAnalysis.PdbSourceDocument.PdbSourceDocumentMetadataAsSourceFileProvider.GetGeneratedFileAsync(Workspace workspace, Project project, ISymbol symbol, bool signaturesOnly, bool allowDecompilation, string tempPath, CancellationToken cancellationToken) in C:/Roslyn/src/Features/Core/Portable/PdbSourceDocument/PdbSourceDocumentMetadataAsSourceFileProvider.cs:line 152
   at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(ref TStateMachine stateMachine)
   at Task<MetadataAsSourceFile> Microsoft.CodeAnalysis.PdbSourceDocument.PdbSourceDocumentMetadataAsSourceFileProvider.GetGeneratedFileAsync(Workspace workspace, Project project, ISymbol symbol, bool signaturesOnly, bool allowDecompilation, string tempPath, CancellationToken cancellationToken)
   at async Task<MetadataAsSourceFile> Microsoft.CodeAnalysis.MetadataAsSource.MetadataAsSourceFileService.GetGeneratedFileAsync(Project project, ISymbol symbol, bool signaturesOnly, bool allowDecompilation, CancellationToken cancellationToken) in C:/Roslyn/src/Features/Core/Portable/MetadataAsSource/MetadataAsSourceFileService.cs:line 97
   at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(ref TStateMachine stateMachine)
   at Task<MetadataAsSourceFile> Microsoft.CodeAnalysis.MetadataAsSource.MetadataAsSourceFileService.GetGeneratedFileAsync(Project project, ISymbol symbol, bool signaturesOnly, bool allowDecompilation, CancellationToken cancellationToken)
   at bool Microsoft.Ide.Roslyn.SymbolNavigationService.TryNavigateToSymbol(ISymbol symbol, Project project, OptionSet options, CancellationToken cancellationToken)+() => { } [2] in C:/Ide/src/Microsoft.Ide.Roslyn/Navigation/SymbolNavigationService.cs:line 97
   at void Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob<T>(Func<Task> asyncMethod, JoinableTask job)
   at JoinableTask<T> Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync<T>(Func<Task<T>> asyncMethod, bool synchronouslyBlocking, JoinableTaskCreationOptions creationOptions)
   at T Microsoft.VisualStudio.Threading.JoinableTaskFactory.Run<T>(Func<Task<T>> asyncMethod, JoinableTaskCreationOptions creationOptions)
   at bool Microsoft.Ide.Roslyn.SymbolNavigationService.TryNavigateToSymbol(ISymbol symbol, Project project, OptionSet options, CancellationToken cancellationToken) in C:/Ide/src/Microsoft.Ide.Roslyn/Navigation/SymbolNavigationService.cs:line 97
   at Task<bool> Microsoft.CodeAnalysis.FindUsages.DefinitionItem+DefaultDefinitionItem.TryNavigateToMetadataSymbolAsync(Workspace workspace, string symbolKey, Func<ISymbol, Project, ISymbolNavigationService, bool> action)+(ISymbol symbol, Project project, ISymbolNavigationService service) => { } in C:/Roslyn/src/Features/Core/Portable/FindUsages/DefinitionItem.DefaultDefinitionItem.cs:line 82
   at async Task<bool> Microsoft.CodeAnalysis.FindUsages.DefinitionItem+DefaultDefinitionItem.TryNavigateToMetadataSymbolAsync(Workspace workspace, string symbolKey, Func<ISymbol, Project, ISymbolNavigationService, bool> action) in C:/Roslyn/src/Features/Core/Portable/FindUsages/DefinitionItem.DefaultDefinitionItem.cs:line 97
   at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(ref TStateMachine stateMachine)
   at Task<bool> Microsoft.CodeAnalysis.FindUsages.DefinitionItem+DefaultDefinitionItem.TryNavigateToMetadataSymbolAsync(Workspace workspace, string symbolKey, Func<ISymbol, Project, ISymbolNavigationService, bool> action)
   at async Task<bool> Microsoft.CodeAnalysis.FindUsages.DefinitionItem+DefaultDefinitionItem.TryNavigateToAsync(Workspace workspace, bool showInPreviewTab, bool activateTab, CancellationToken cancellationToken) in C:/Roslyn/src/Features/Core/Portable/FindUsages/DefinitionItem.DefaultDefinitionItem.cs:line 62
   at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(ref TStateMachine stateMachine)
   at Task<bool> Microsoft.CodeAnalysis.FindUsages.DefinitionItem+DefaultDefinitionItem.TryNavigateToAsync(Workspace workspace, bool showInPreviewTab, bool activateTab, CancellationToken cancellationToken)
   at async Task<bool> Microsoft.CodeAnalysis.Editor.Host.IStreamingFindUsagesPresenterExtensions.TryNavigateToOrPresentItemsAsync(IStreamingFindUsagesPresenter presenter, IThreadingContext threadingContext, Workspace workspace, string title, ImmutableArray<DefinitionItem> items, CancellationToken cancellationToken) in C:/Roslyn/src/EditorFeatures/Core/Host/IStreamingFindReferencesPresenter.cs:line 106
   at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(ref TStateMachine stateMachine)
   at Task<bool> Microsoft.CodeAnalysis.Editor.Host.IStreamingFindUsagesPresenterExtensions.TryNavigateToOrPresentItemsAsync(IStreamingFindUsagesPresenter presenter, IThreadingContext threadingContext, Workspace workspace, string title, ImmutableArray<DefinitionItem> items, CancellationToken cancellationToken)
   at async Task<bool> Microsoft.CodeAnalysis.Editor.GoToDefinition.GoToDefinitionHelpers.TryGoToDefinitionAsync(ISymbol symbol, Solution solution, IThreadingContext threadingContext, IStreamingFindUsagesPresenter streamingPresenter, CancellationToken cancellationToken, bool thirdPartyNavigationAllowed) in C:/Roslyn/src/EditorFeatures/Core/GoToDefinition/GoToDefinitionHelpers.cs:line 131
   at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(ref TStateMachine stateMachine)
   at Task<bool> Microsoft.CodeAnalysis.Editor.GoToDefinition.GoToDefinitionHelpers.TryGoToDefinitionAsync(ISymbol symbol, Solution solution, IThreadingContext threadingContext, IStreamingFindUsagesPresenter streamingPresenter, CancellationToken cancellationToken, bool thirdPartyNavigationAllowed)
   at bool Microsoft.CodeAnalysis.Editor.GoToDefinition.GoToDefinitionHelpers.TryGoToDefinition(ISymbol symbol, Solution solution, IThreadingContext threadingContext, IStreamingFindUsagesPresenter streamingPresenter, CancellationToken cancellationToken, bool thirdPartyNavigationAllowed)+() => { } in C:/Roslyn/src/EditorFeatures/Core/GoToDefinition/GoToDefinitionHelpers.cs:line 115
   at void Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob<T>(Func<Task> asyncMethod, JoinableTask job)
   at JoinableTask<T> Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync<T>(Func<Task<T>> asyncMethod, bool synchronouslyBlocking, JoinableTaskCreationOptions creationOptions)
   at T Microsoft.VisualStudio.Threading.JoinableTaskFactory.Run<T>(Func<Task<T>> asyncMethod, JoinableTaskCreationOptions creationOptions)
   at bool Microsoft.CodeAnalysis.Editor.GoToDefinition.GoToDefinitionHelpers.TryGoToDefinition(ISymbol symbol, Solution solution, IThreadingContext threadingContext, IStreamingFindUsagesPresenter streamingPresenter, CancellationToken cancellationToken, bool thirdPartyNavigationAllowed) in C:/Roslyn/src/EditorFeatures/Core/GoToDefinition/GoToDefinitionHelpers.cs:line 114

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions