PSReadLine crashes with ArgumentOutOfRangeException on SetCursorPosition when quickly editing long input line (top=29, BufferHeight=29)

Open Beginner friendly
#5,195 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
68/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
csharp
Domain
cli

Research direction

Reproduce the crash with BufferHeight 29, then trace the reported SetCursorPosition call through MoveCursorToEnd during console buffer refresh. Ensure the cursor top remains within 0..BufferHeight-1 and verify that rapid Backspace editing followed by typing no longer closes the session.

Written by the indexing model from the issue text.

Description

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
# PSReadLine crashes with ArgumentOutOfRangeException on rapid Backspace editing

## Environment
- PowerShell: 7.x (console)
- PSReadLine version: 2.4.5
- Terminal: Windows Console host, BufferHeight = 29

## Bug description
Typing commands and rapidly pressing Backspace caused PSReadLine to crash with
`ArgumentOutOfRangeException` thrown from `SetCursorPosition`:


Exception:
System.Management.Automation.PSArgumentOutOfRangeException:
Cannot process argument transformation on parameter 'top'.
Parameter name: 'top' cannot be greater than '29'


## Reproduction steps
1. Open a PowerShell console with a short window (BufferHeight ~29).
2. Type `vine update`, then `vine inventory`.
3. Press Backspace ~13 times quickly to erase, retype `vine inventory`, press Enter.
4. Press `r` — crash occurs.

## Root cause analysis
- The reported cursor line index is `29`, which is out of the valid range `0..28`
  when BufferHeight == 29.
- The crash happened during input-line redraw after a burst of Backspace keys,
  suggesting PSReadLine's cursor position calculation went out of bounds
  (off-by-one at the bottom edge of the buffer).

## Notes
- This is not caused by the command itself — any command can trigger it when
  the buffer is short and Backspace is pressed rapidly.
- Suggested fix: clamp the cursor `top` coordinate to `[0, BufferHeight-1]`
  before calling `SetCursorPosition`.

## Reporter context
Found while testing **Vine** (https://codeberg.org/Milktown/vine), a
text-instruction-based package manager for Windows. It has nothing to do with
the crash, just FYI — Vine is a neat open-source project worth a look. :)
Screenshot
Image
Environment data
PS Version: 7.6.3
PS HostName: ConsoleHost (Windows Terminal)
PSReadLine Version: 2.4.5
PSReadLine EditMode: Windows
OS: 10.0.19038.1 (WinBuild.160101.0800)
BufferWidth: 120
BufferHeight: 29
Steps to reproduce

Steps to reproduce

  1. Open PowerShell with a window sized so console BufferHeight is exactly 29 (e.g. 80 columns x 29 rows)
  2. Run: vine update
  3. Run: vine inventory
  4. Press Backspace 13 times rapidly (no text may remain, or partial)
  5. Retype: vine inventory
  6. Press Enter
  7. Type a single character, e.g. r — crash happens on redraw
Expected behavior

Expected behavior

  • Cursor line is clamped to valid range (0..BufferHeight-1); typing any character redraws the input line without errors
Actual behavior

Actual behavior

  • PSReadLine throws ArgumentOutOfRangeException: top parameter (29) is out of valid range 0..28
  • Stack: SetCursorPosition <- MoveCursorToEnd <- ... console buffer refresh; entire session crashes and closes
Dominant language
C#
Stars
4.4k
Forks
341
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from PowerShell/PSReadLine

All issues in PowerShell/PSReadLine

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.