Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PowerShell Preview: issue with host implementation dropping the first letter #1753

Closed
sk82jack opened this issue Feb 8, 2019 · 7 comments · Fixed by PowerShell/PowerShellEditorServices#1072
Labels

Comments

@sk82jack
Copy link

sk82jack commented Feb 8, 2019

System Details

VSCode version: 1.31.0 7c66f58312b48ed8ca4e387ebd9ffe9605332caa x64

VSCode extensions:

CoenraadS.bracket-pair-colorizer-2@0.0.26
eamodio.gitlens@9.5.0
ms-azure-devops.azure-pipelines@1.147.1
ms-mssql.mssql@1.4.0
ms-python.python@2019.1.0
ms-vscode.csharp@1.17.1
ms-vscode.PowerShell-Preview@2.0.0
ms-vsliveshare.vsliveshare@0.3.1151

PSES version: 2.0.0.0

PowerShell version:

Name Value


PSVersion 5.1.17763.134
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.134
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

System Details Output


Issue Description

When prompting for input from the host (i.e. Read-Host or Get-Credential) the first letter that you type gets ignored resulting in the intended value of the command to be incorrect. It then writes the initial letter that got committed onto the next line in the console. Please see the gif below:

2019-02-08_22-45-22

Expected Behaviour

From the example in the gif I would expect the output of the command to be test and then have an empty line to continue typing commands.

Actual Behaviour

The example in the gif shows that the initial t typed is not registered as part of the input and so the command outputs est and then you can see the intial t is the written in the console on the next line.

Attached Logs

Haven't attached logs as it's not crashing but let me know if you need me to.

@SydneyhSmith SydneyhSmith added Area-General Issue-Bug A bug to squash. and removed Area-General labels Feb 11, 2019
@SydneyhSmith
Copy link
Collaborator

SydneyhSmith commented Feb 12, 2019

@sk82jack thanks for reporting this, it looks like this is a buffer issue likely caused by the PSReadLine implementation.
@SeeminglyScience any thoughts?

@SeeminglyScience
Copy link
Collaborator

Yeah I believe this is due to an incorrect assumption on my part. I had thought that if two threads were invoking Console.ReadKey(true) at the same time (on Windows at least) then both threads would get the same key at the same time. I thought I had tested that, but it appears I did not.

A possible fix would be to use the same ReadKey override field we use for non-Windows to inject our ReadKey implementation.

@ili101
Copy link

ili101 commented Mar 31, 2019

I can confirm that it is still a problem in preview 2.

@sba923
Copy link

sba923 commented Jun 19, 2019

I confirm this issue; if I run the following script

Write-Host -NoNewline ("Enter password: ")
$password = Read-Host -AsSecureString


$RIOM = [Runtime.InteropServices.Marshal]
$bStr = $RIOM::SecureStringToBSTR($password)
$ctpassword = $RIOM::PtrToStringAuto($bStr)
$RIOM::ZeroFreeBSTR($bStr)

Write-Host ("Password is: '{0}'" -f $ctpassword)

Remove-Variable ctpassword

and enter 12345 I get:

image

@TylerLeonhardt
Copy link
Member

I've got a PR out to fix this.

@ili101
Copy link

ili101 commented Nov 6, 2019

Not fully fixed

  1. Copy something
  2. Run a file with Read-Host with F5
  3. Paste in console
    Paste

@ghost ghost added the Needs: Maintainer Attention Maintainer attention needed! label Nov 6, 2019
@TylerLeonhardt
Copy link
Member

@ili101 looks like that's dropping a few characters on paste. A different issue than this one. Can you open a new issue so we can track this separately?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants