Using PowerShell Preview v2021.11.1, PSReadLine throws an error every so often · Issue #3701 · PowerShell/vscode-powershell · GitHub
Skip to content

Using PowerShell Preview v2021.11.1, PSReadLine throws an error every so often #3701

Closed

Description

@energetic-it

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest released version
  • Search the existing issues, especially the pinned issues.

Exception report

Oops, something went wrong.
Please report this bug with ALL the details below, including both the 'Environment' and 'Exception' sections.
Please report on GitHub: https://github.com/PowerShell/PSReadLine/issues/new?template=Bug_Report.yaml
Thank you!

### Environment
PSReadLine: 2.2.0-beta4
PowerShell: 2021.11.1
OS: Microsoft Windows 10.0.22000
BufferWidth: 230
BufferHeight: 26

Last 63 Keys:

 g e t - m o d u l e Enter
 g e t Backspace Backspace Backspace Backspace Backspace $ p s v e r s i o Tab Enter
 UpArrow . p s Tab Enter
 UpArrow Spacebar | g m Enter
 UpArrow Backspace Backspace Backspace Backspace Backspace Backspace Backspace Backspace Backspace Backspace Backspace Backspace Backspace g i t q Backspace Tab Enter


### Exception

System.Management.Automation.PSInvalidOperationException: The pipeline was not run because a pipeline is already running. Pipelines cannot be run concurrently.
   at System.Management.Automation.Runspaces.PipelineBase.DoConcurrentCheck(Boolean syncCall, Object syncObject, Boolean isInLock)
   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.Worker.CreateRunspaceIfNeededAndDoWork(Runspace rsToUse, Boolean isSync)
   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[T](IEnumerable input, PSInvocationSettings settings)
   at Microsoft.PowerShell.EditorServices.Services.PowerShell.Utility.PowerShellExtensions.InvokeAndClear[TResult](PowerShell pwsh, PSInvocationSettings invocationSettings) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Utility\PowerShellExtensions.cs:line 50
   at Microsoft.PowerShell.EditorServices.Services.PowerShell.Execution.SynchronousPowerShellTask`1.ExecuteNormally(CancellationToken cancellationToken) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Execution\SynchronousPowerShellTask.cs:line 120
   at Microsoft.PowerShell.EditorServices.Services.PowerShell.Execution.SynchronousPowerShellTask`1.Run(CancellationToken cancellationToken) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Execution\SynchronousPowerShellTask.cs:line 55
   at Microsoft.PowerShell.EditorServices.Services.PowerShell.Execution.SynchronousTask`1.ExecuteSynchronously(CancellationToken executorCancellationToken) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Execution\SynchronousTask.cs:line 104
--- End of stack trace from previous location ---
   at Microsoft.PowerShell.EditorServices.Services.PowerShell.Execution.SynchronousTask`1.get_Result() in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Execution\SynchronousTask.cs:line 60
   at Microsoft.PowerShell.EditorServices.Services.PowerShell.Host.PsesInternalHost.OnPowerShellIdle(CancellationToken idleCancellationToken) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Host\PsesInternalHost.cs:line 832
   at Microsoft.PowerShell.PSConsoleReadLine.ReadKey()
   at Microsoft.PowerShell.PSConsoleReadLine.InputLoop()
   at Microsoft.PowerShell.PSConsoleReadLine.ReadLine(Runspace runspace, EngineIntrinsics engineIntrinsics, CancellationToken cancellationToken, Nullable`1 lastRunStatus)

Screenshot

image

Environment data

PS Version: 7.2.0
PS HostName: Visual Studio Code Host
PSReadLine Version: 2.2.0-beta4
PSReadLine EditMode: Windows
OS: 10.0.22000.1 (WinBuild.160101.0800)
BufferWidth: 230
BufferHeight: 26PowerShell Preview
v2021.11.1

Steps to reproduce

On my system.

Starting VSCode, using the Windows Store Powershell or Powershell preview installation.
Using the PowerShell Preview v2021.11.1 extension.

Without doing anything the error provided will pop up every now and then. (writing this generated 5 errors already)
Just having the
It breaks any running scripts I have going.

Using the normal PowerShell extension everything works fine.

Expected behavior

No PSreadline errors while using the PowerShell Preview v2021.11.1 extension.

Actual behavior

I'm unable to use the PowerShell Preview v2021.11.1 extension because of this PSReadline error happening a couple of time every few minute.

Activity

  1. daxian-dbw commented on Nov 23, 2021

    @daxian-dbw
    Member

    Andy Jordan (@andschwa) can you please take a look?

  2. ghost added
    Needs: TriageMaintainer attention needed!
    on Nov 23, 2021
  3. andyleejordan commented on Nov 23, 2021

    @andyleejordan
    Member

    Dongbo Wang (@daxian-dbw) Transferred, will look into.

  4. andyleejordan commented on Jan 6, 2022

    @andyleejordan
    Member

    Ralf (@energetic-it) Can you give me more information on how to reproduce this?

  5. andyleejordan commented on Jan 6, 2022

    @andyleejordan
    Member

    Dongbo Wang (@daxian-dbw) I think maybe our OnPowerShellIdle function needs to wait to process events until we know that the rest of the startup process has finished and nothing else is running in the pipeline.

    The pipeline was not run because a pipeline is already running. Pipelines cannot be run concurrently.

    Clearly there's some race happening. My current guess I'd want to investigate if I can reproduce this is that this hacky section of code:

                // We didn't end up executing anything in the background,
                // so we need to run a small artificial pipeline instead
                // to force event processing
                if (runPipelineForEventProcessing)
                {
                    InvokePSCommand(new PSCommand().AddScript("0", useLocalScope: true), PowerShellExecutionOptions.Default, CancellationToken.None);
                }

    Isn't locked and therefore it's running its fake task after other stuff started running.

  6. brwilkinson commented on Jan 8, 2022

    @brwilkinson

    Adding comment to follow...

    First mentioned here: PowerShell/PSReadLine#3091

    I have this consistently. Let me know if there is anything I can provide in the way of logs etc ?

     $PSVersionTable
    
    Name                           Value
    ----                           -----
    PSVersion                      7.3.0-preview.1
    PSEdition                      Core
    GitCommitId                    7.3.0-preview.1
    OS                             Microsoft Windows 10.0.22526
    Platform                       Win32NT
    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
    PSRemotingProtocolVersion      2.3
    SerializationVersion           1.1.0.1
    WSManStackVersion              3.0
    
    
    gmo psreadline
    
    ModuleType Version    PreRelease Name                                ExportedCommands
    ---------- -------    ---------- ----                                ----------------
    Script     2.2.0      beta4      PSReadLine                          {Get-PSReadLineKeyHandler, Get-PSReadLineOption, Remove-PSReadLineKeyHandler, Set-PSReadLineKeyHandler…}
    
    
    code-insiders --list-extensions --show-versions
    ms-vscode.powershell-preview@2021.12.0
    Oops, something went wrong.
    Please report this bug with ALL the details below, including both the 'Environment' and 'Exception' sections.
    Please report on GitHub: https://github.com/PowerShell/PSReadLine/issues/new?template=Bug_Report.yaml
    Thank you!
    
    ### Environment
    PSReadLine: 2.2.0-beta4
    PowerShell: 2021.12.0
    OS: Microsoft Windows 10.0.22526
    BufferWidth: 338
    BufferHeight: 63
    
    Last 12 Keys:
    
     g e t Backspace Backspace Backspace Backspace Backspace c l s Enter
    
    
    ### Exception
    
    System.Management.Automation.PSInvalidOperationException: The pipeline was not run because a pipeline is already running. Pipelines cannot be run concurrently.
       at System.Management.Automation.Runspaces.PipelineBase.DoConcurrentCheck(Boolean syncCall, Object syncObject, Boolean isInLock)
       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.Worker.CreateRunspaceIfNeededAndDoWork(Runspace rsToUse, Boolean isSync)
       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[T](IEnumerable input, PSInvocationSettings settings)
       at Microsoft.PowerShell.EditorServices.Services.PowerShell.Utility.PowerShellExtensions.InvokeAndClear[TResult](PowerShell pwsh, PSInvocationSettings invocationSettings) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Utility\PowerShellExtensions.cs:line 50
       at Microsoft.PowerShell.EditorServices.Services.PowerShell.Execution.SynchronousPowerShellTask`1.ExecuteNormally(CancellationToken cancellationToken) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Execution\SynchronousPowerShellTask.cs:line 120
       at Microsoft.PowerShell.EditorServices.Services.PowerShell.Execution.SynchronousPowerShellTask`1.Run(CancellationToken cancellationToken) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Execution\SynchronousPowerShellTask.cs:line 55
       at Microsoft.PowerShell.EditorServices.Services.PowerShell.Execution.SynchronousTask`1.ExecuteSynchronously(CancellationToken executorCancellationToken) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Execution\SynchronousTask.cs:line 104
    --- End of stack trace from previous location ---
       at Microsoft.PowerShell.EditorServices.Services.PowerShell.Execution.SynchronousTask`1.get_Result() in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Execution\SynchronousTask.cs:line 60
       at Microsoft.PowerShell.EditorServices.Services.PowerShell.Host.PsesInternalHost.OnPowerShellIdle(CancellationToken idleCancellationToken) in D:\a\1\s\src\PowerShellEditorServices\Services\PowerShell\Host\PsesInternalHost.cs:line 825
       at Microsoft.PowerShell.PSConsoleReadLine.ReadKey()
       at Microsoft.PowerShell.PSConsoleReadLine.InputLoop()
       at Microsoft.PowerShell.PSConsoleReadLine.ReadLine(Runspace runspace, EngineIntrinsics engineIntrinsics, CancellationToken cancellationToken, Nullable`1 lastRunStatus)
    
  7. energetic-it commented on Jan 9, 2022

    @energetic-it
    Author

    Ralf (@energetic-it) Can you give me more information on how to reproduce this?

    What can I do to help out?
    For me, following my steps above worked.
    Perhaps I wasn't clear somewhere?

  8. 13 remaining items

  9. andyleejordan commented on Feb 3, 2022

    @andyleejordan
    Member

    Sydney Smith (@SydneyhSmith) we know what the root cause is here, and the workaround is to unregister the events. Since we don't have a timeline for a true bug fix (as that would require a patch to PowerShell itself), we need to determine the best mitigation strategy:

    • Override the PowerShell cmdlets to register an event and make it a no-op with a warning (we should check if this user's report would have been prevented by this action)
    • Document this as a known issue in the troubleshooting doc with a "how to figure out and fix" section
    • Both of the above 😁
  10. brwilkinson commented on Feb 3, 2022

    @brwilkinson

    Sydney Smith (@SydneyhSmith) Sydney Smith (SHE/HER) FTE we know what the root cause is here, and the workaround is to unregister the events. Since we don't have a timeline for a true bug fix (as that would require a patch to PowerShell itself), we need to determine the best mitigation strategy:

    There may already work being done on this.

    Azure/azure-powershell#16586

    Ben Wilkinson (@brwilkinson) Ben Wilkinson FTE we introduced this in the preview but there is no setting to remove the message. We will remove this in the upcoming preview.
    cc kceiw

    Damien Caro (@dcaro) or kceiw did you happen to have any status update on the above? Perhaps we can figure out a timeline?

    • the original request was to remove the message 'azpredictor' rating prompt, however I assume this eventsubscriber, is also prompting for feedback is related and could also be removed?
  11. moved this from Todo to In Progress in Sea Biscuiton Feb 16, 2022
  12. andyleejordan commented on Feb 16, 2022

    @andyleejordan
    Member

    This is in progress as an Azure PowerShell dev and I have been working on conditionally disabling their event registration so this bug does not show up in the extension. There isn't a good solution, but at least we have a workaround.

  13. andyleejordan commented on Feb 16, 2022

    @andyleejordan
    Member
  14. andyleejordan commented on Feb 22, 2022

    @andyleejordan
    Member

    Sydney Smith (@SydneyhSmith) We're waiting for Azure PowerShell to release v7.2.1 which should contain the referenced fix (is that correct Yabo Hu (@VeryEarly)?), and then we'll have at least worked around the most prevalent cause of this issue.

  15. StevenBucher98 commented on Apr 19, 2022

    @StevenBucher98
    Contributor

    Az.Tools.Predictor 1.0 GA'd and should no longer be one of the causes of this issue. Probably other cases that might trigger this so not entirely fixed. There is work arounds linked above

  16. ghost closed this as completedon May 9, 2022
  17. Repository owner moved this from In Progress to Done in Sea Biscuiton May 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions