You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a nested expression is entered into a string in a PowerShell editor buffer, PSRL will crash due to a runspace exception. It's likely the root cause isn't with PSRL integration but with PowerShellExecutionContext.
Here's a repro:
Step 1
filterAssembleCLEntry
{
param(
[Parameter(Mandatory,ValueFromPipeline)]
[ChangelogItem]
$CLItem,
[Parameter()]
[string]
$Organization='PowerShell',
[Parameter()]
[string]
$Repository='vscode-powershell'
)
return [ChangelogEntry]@{
IssueLink=if ($CLItem.IssueNumber-ge0) { "https://github.com/$Organization/$Repository/issues/$($CLItem.IssueNumber)" }
PRLink=if ($CLItem.PRNumber-ge0) { "https://github.com/$Organization/$Repository/$"# <-- Next char in the string will crash the extension }
}
}
2019-05-15 10:38:21.327 [ERROR] tid:26 in 'OnListenTaskCompleted' C:\PowerShellEditorServices\src\PowerShellEditorServices.Protocol\MessageProtocol\ProtocolEndpoint.cs: line 391
ProtocolEndpoint message loop terminated due to unhandled exception:
System.AggregateException: One or more errors occurred. (Index and length must refer to a location within the string.
Parameter name: length) ---> System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
at System.String.Substring(Int32 startIndex, Int32 length)
at Microsoft.PowerShell.EditorServices.FindReferencesVisitor.VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst) in C:\PowerShellEditorServices\src\PowerShellEditorServices\Language\FindReferencesVisitor.cs:line 146
at System.Management.Automation.Language.FunctionDefinitionAst.InternalVisit(AstVisitor visitor)
at System.Management.Automation.Language.StatementBlockAst.InternalVisit(AstVisitor visitor, ReadOnlyCollection`1 traps, ReadOnlyCollection`1 statements, AstVisitAction action)
at System.Management.Automation.Language.NamedBlockAst.InternalVisit(AstVisitor visitor)
at System.Management.Automation.Language.ScriptBlockAst.InternalVisit(AstVisitor visitor)
at System.Management.Automation.Language.Ast.Visit(AstVisitor astVisitor)
at Microsoft.PowerShell.EditorServices.AstOperations.FindReferencesOfSymbol(Ast scriptAst, SymbolReference symbolReference, Dictionary`2 CmdletToAliasDictionary, Dictionary`2 AliasToCmdletDictionary) in C:\PowerShellEditorServices\src\PowerShellEditorServices\Language\AstOperations.cs:line 203
at Microsoft.PowerShell.EditorServices.LanguageService.FindReferencesOfSymbolAsync(SymbolReference foundSymbol, ScriptFile[] referencedFiles, Workspace workspace) in C:\PowerShellEditorServices\src\PowerShellEditorServices\Language\LanguageService.cs:line 362
at Microsoft.PowerShell.EditorServices.CodeLenses.ReferencesCodeLensProvider.ResolveCodeLensAsync(CodeLens codeLens, CancellationToken cancellationToken) in C:\PowerShellEditorServices\src\PowerShellEditorServices.Host\CodeLens\ReferencesCodeLensProvider.cs:line 85
at Microsoft.PowerShell.EditorServices.CodeLenses.CodeLensFeature.HandleCodeLensResolveRequestAsync(CodeLens codeLens, RequestContext`1 requestContext) in C:\PowerShellEditorServices\src\PowerShellEditorServices.Host\CodeLens\CodeLensFeature.cs:line 176
at Microsoft.PowerShell.EditorServices.Protocol.MessageProtocol.MessageDispatcher.DispatchMessageAsync(Message messageToDispatch, MessageWriter messageWriter) in C:\PowerShellEditorServices\src\PowerShellEditorServices.Protocol\MessageProtocol\MessageDispatcher.cs:line 177
at Microsoft.PowerShell.EditorServices.Protocol.MessageProtocol.ProtocolEndpoint.ListenForMessagesAsync(CancellationToken cancellationToken) in C:\PowerShellEditorServices\src\PowerShellEditorServices.Protocol\MessageProtocol\ProtocolEndpoint.cs:line 385
at Microsoft.PowerShell.EditorServices.Utility.AsyncContext.Start(Func`1 asyncMainFunc, ILogger logger) in C:\PowerShellEditorServices\src\PowerShellEditorServices\Utility\AsyncContext.cs:line 50
at Microsoft.PowerShell.EditorServices.Utility.AsyncContextThread.<>c__DisplayClass4_0.<Run>b__0() in C:\PowerShellEditorServices\src\PowerShellEditorServices\Utility\AsyncContextThread.cs:line 67
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of inner exception stack trace ---
---> (Inner Exception #0) System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
at System.String.Substring(Int32 startIndex, Int32 length)
at Microsoft.PowerShell.EditorServices.FindReferencesVisitor.VisitFunctionDefinition(FunctionDefinitionAst functionDefinitionAst) in C:\PowerShellEditorServices\src\PowerShellEditorServices\Language\FindReferencesVisitor.cs:line 146
at System.Management.Automation.Language.FunctionDefinitionAst.InternalVisit(AstVisitor visitor)
at System.Management.Automation.Language.StatementBlockAst.InternalVisit(AstVisitor visitor, ReadOnlyCollection`1 traps, ReadOnlyCollection`1 statements, AstVisitAction action)
at System.Management.Automation.Language.NamedBlockAst.InternalVisit(AstVisitor visitor)
at System.Management.Automation.Language.ScriptBlockAst.InternalVisit(AstVisitor visitor)
at System.Management.Automation.Language.Ast.Visit(AstVisitor astVisitor)
at Microsoft.PowerShell.EditorServices.AstOperations.FindReferencesOfSymbol(Ast scriptAst, SymbolReference symbolReference, Dictionary`2 CmdletToAliasDictionary, Dictionary`2 AliasToCmdletDictionary) in C:\PowerShellEditorServices\src\PowerShellEditorServices\Language\AstOperations.cs:line 203
at Microsoft.PowerShell.EditorServices.LanguageService.FindReferencesOfSymbolAsync(SymbolReference foundSymbol, ScriptFile[] referencedFiles, Workspace workspace) in C:\PowerShellEditorServices\src\PowerShellEditorServices\Language\LanguageService.cs:line 362
at Microsoft.PowerShell.EditorServices.CodeLenses.ReferencesCodeLensProvider.ResolveCodeLensAsync(CodeLens codeLens, CancellationToken cancellationToken) in C:\PowerShellEditorServices\src\PowerShellEditorServices.Host\CodeLens\ReferencesCodeLensProvider.cs:line 85
at Microsoft.PowerShell.EditorServices.CodeLenses.CodeLensFeature.HandleCodeLensResolveRequestAsync(CodeLens codeLens, RequestContext`1 requestContext) in C:\PowerShellEditorServices\src\PowerShellEditorServices.Host\CodeLens\CodeLensFeature.cs:line 176
at Microsoft.PowerShell.EditorServices.Protocol.MessageProtocol.MessageDispatcher.DispatchMessageAsync(Message messageToDispatch, MessageWriter messageWriter) in C:\PowerShellEditorServices\src\PowerShellEditorServices.Protocol\MessageProtocol\MessageDispatcher.cs:line 177
at Microsoft.PowerShell.EditorServices.Protocol.MessageProtocol.ProtocolEndpoint.ListenForMessagesAsync(CancellationToken cancellationToken) in C:\PowerShellEditorServices\src\PowerShellEditorServices.Protocol\MessageProtocol\ProtocolEndpoint.cs:line 385
at Microsoft.PowerShell.EditorServices.Utility.AsyncContext.Start(Func`1 asyncMainFunc, ILogger logger) in C:\PowerShellEditorServices\src\PowerShellEditorServices\Utility\AsyncContext.cs:line 50
at Microsoft.PowerShell.EditorServices.Utility.AsyncContextThread.<>c__DisplayClass4_0.<Run>b__0() in C:\PowerShellEditorServices\src\PowerShellEditorServices\Utility\AsyncContextThread.cs:line 67
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)<---
2019-05-15 10:38:21.327 [ERROR] tid:26 in 'ProtocolEndpoint_UnhandledException' C:\PowerShellEditorServices\src\PowerShellEditorServices.Host\EditorServicesHost.cs: line 490
PowerShell Editor Services is terminating due to an unhandled exception, see previous logs for details.
2019-05-15 10:38:21.458 [ERROR] tid:1 in 'PopRunspace' C:\PowerShellEditorServices\src\PowerShellEditorServices\Session\PowerShellContext.cs: line 2486
Caller attempted to pop a runspace when no runspaces are on the stack.
Console exception:
System.Management.Automation.Runspaces.InvalidRunspaceStateException: Cannot invoke the pipeline because the runspace is not in the Opened state. Current state of the runspace is 'Closing'.
at System.Management.Automation.Runspaces.RunspaceBase.AddToRunningPipelineList(PipelineBase pipeline)
at System.Management.Automation.Runspaces.RunspaceBase.DoConcurrentCheckAndAddToRunningPipelines(PipelineBase pipeline, Boolean syncCall)
at System.Management.Automation.Runspaces.PipelineBase.CoreInvoke(IEnumerable input, Boolean syncCall)
at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at System.Management.Automation.PowerShell.Worker.ConstructPipelineAndDoWork(Runspace rs, Boolean performSyncInvoke)
at System.Management.Automation.PowerShell.CoreInvokeHelper[TInput,TOutput](PSDataCollection`1 input, PSDataCollection`1 output, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.CoreInvoke[TInput,TOutput](PSDataCollection`1 input, PSDataCollection`1 output, PSInvocationSettings settings)
at System.Management.Automation.PowerShell.Invoke(IEnumerable input, PSInvocationSettings settings)
at Microsoft.PowerShell.PSConsoleReadLine.ReadKey()
at Microsoft.PowerShell.PSConsoleReadLine.InputLoop()
at Microsoft.PowerShell.PSConsoleReadLine.ReadLine(Runspace runspace, EngineIntrinsics engineIntrinsics, CancellationToken cancellationToken)
System Details
System Details Output
Issue Description
When a nested expression is entered into a string in a PowerShell editor buffer, PSRL will crash due to a runspace exception. It's likely the root cause isn't with PSRL integration but with PowerShellExecutionContext.
Here's a repro:
Step 1
Step 2
Expected Behaviour
Life as normal
Actual Behaviour
Extension crashes
Attached Logs
Relevant Log entry:
Console exception:
This might also be related to PowerShell/PowerShellEditorServices#907
The text was updated successfully, but these errors were encountered: