Unexpected System.ArgumentOutOfRangeException

オープン
#5,213 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
活発
技術スタック
csharp
領域
cli

調査の方向性

Start with the stack trace in Microsoft.PowerShell.PSConsoleReadLine, especially CalculateWhereAndWhatToRender and ReallyRender, and investigate the reported Windows Terminal resize or display-scaling conditions. Reproduce with a 120x41 buffer if possible and determine why the cursor top exceeds the console buffer. Done means the reported interaction no longer raises ArgumentOutOfRangeException.

索引モデルが issue の本文から書いたものです。

説明

Needs-Triage :mag:
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.4.5
PowerShell: 7.6.6
OS: Microsoft Windows 10.0.26200
BufferWidth: 120
BufferHeight: 41

Last 200 Keys:

 ; o u t p u t S c h e m a = h t t p : / / w w w . i s o t c 2 1 1 . o r g / 2 0 0 5 / g m d & a m p ; e l e m e n t S e t N a m e = f u l l & a m p ; i d = 6 6 b 8 1 e a 6 - 3 0 5 6 - 4 6 d 0 - 8 7 3 f - 7 a 7 7 3 a 9 3 2 6 b c ' Enter
 c d Spacebar N R C Tab Enter
 l s Enter
 c d Spacebar G e o Tab Tab Tab Tab Tab Tab Tab Tab Enter
 l s Enter
 l s Ctrl+c Ctrl+c c d Spacebar . . Enter
 f z f Enter
 w m s - p r o x y - l a m b d a - r u s t \ s r c \ m a i n . r s Home l e s s Spacebar Enter
 c

### Exception

System.ArgumentOutOfRangeException: The value must be greater than or equal to zero and less than the console's buffer size in that dimension. (Parameter 'top')
Actual value was 43.
   at System.ConsolePal.SetCursorPosition(Int32 left, Int32 top)
   at Microsoft.PowerShell.PSConsoleReadLine.CalculateWhereAndWhatToRender(Boolean cursorMovedToInitialPos, RenderData renderData, LineInfoForRendering& lineInfoForRendering)
   at Microsoft.PowerShell.PSConsoleReadLine.ReallyRender(RenderData renderData, String defaultColor)
   at Microsoft.PowerShell.PSConsoleReadLine.ForceRender()
   at Microsoft.PowerShell.PSConsoleReadLine.Insert(Char c)
   at Microsoft.PowerShell.PSConsoleReadLine.SelfInsert(Nullable`1 key, Object arg)
   at Microsoft.PowerShell.PSConsoleReadLine.ProcessOneKey(PSKeyInfo key, Dictionary`2 dispatchTable, Boolean ignoreIfNoAction, Object arg)
   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.6.6
PS HostName: ConsoleHost (Windows Terminal)
PSReadLine Version: 2.4.5
PSReadLine EditMode: Windows
OS: 10.0.26100.1 (WinBuild.160101.0800)
BufferWidth: 120
BufferHeight: 41
Steps to reproduce

Not sure if it is related: I unplugged my USB dock (with DisplayPort) and HDMI cable, so the Windows 11 Display Settings > Scale may have changed from 100% to 125%? I see the PowerShell terminal font size was changed as I switched tabs. It happened quite some time after I unplugged my laptop though, though I wasn't actively using that Windows Terminal tab until I switched to it, and the exception happened in front of my eyes. I forgot if I pressed any keys just before it happened though.

Expected behavior

No exception

Actual behavior

The above exception happens

主要言語
C#
スター
4.4k
フォーク
341
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

PowerShell/PSReadLine のほかの issue

PowerShell/PSReadLine の issue をすべて見る

似ている issue

C# の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。