ICSharpCode.TextEditor.TextView.MeasureStringWidth crash

Author: mstvCreated Sep 9, 2026Updated Sep 19, 2026
Labels:eyeglasses: status: needs reviewneeds-area-label

Environment

  • Git Extensions 33.33.33
  • Build cb0240b634685eb63360692b671dcddb007f8244
  • Git 2.53.0.windows.2
  • Microsoft Windows NT 10.0.26200.0
  • .NET 10.0.11
  • DPI 96dpi (no scaling)
  • Portable: False

Issue description

Image
************** Exception Text **************
System.ArgumentException: Parameter is not valid.
   at (HDC hdc, int saveState) System.Drawing.Graphics.System.Drawing.IGraphicsContextInfo.GetHdc(ApplyGraphicsProperties apply, bool alwaysSaveState)
   at Size System.Windows.Forms.TextRenderer.MeasureTextInternal(IDeviceContext dc, ReadOnlySpan<char> text, Font font, Size proposedSize, TextFormatFlags flags)
   at int ICSharpCode.TextEditor.TextView.MeasureStringWidth(Graphics g, in ReadOnlySpan<char> word, Font font) in D:/Build/gitextensions3_dev/externals/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs:line 611
   at int ICSharpCode.TextEditor.TextView.GetVisualWidthColumns(Graphics g, LineSegment line) in D:/Build/gitextensions3_dev/externals/ICSharpCode.TextEditor/Project/Src/Gui/TextView.cs:line 736
   at void ICSharpCode.TextEditor.TextAreaControl.UpdateLayout()+ComputeScrollBarVisibilities(Size size) in D:/Build/gitextensions3_dev/externals/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs:line 309
   at void ICSharpCode.TextEditor.TextAreaControl.UpdateLayout() in D:/Build/gitextensions3_dev/externals/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs:line 194
   at void ICSharpCode.TextEditor.TextAreaControl.AdjustScrollBarsOnDocumentChange(object sender, DocumentEventArgs e) in D:/Build/gitextensions3_dev/externals/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaControl.cs:line 147
   at void ICSharpCode.TextEditor.Document.DefaultDocument.OnDocumentChanged(DocumentEventArgs e) in D:/Build/gitextensions3_dev/externals/ICSharpCode.TextEditor/Project/Src/Document/DefaultDocument.cs:line 355
   at void ICSharpCode.TextEditor.Document.DefaultDocument.set_TextContent(string value) in D:/Build/gitextensions3_dev/externals/ICSharpCode.TextEditor/Project/Src/Document/DefaultDocument.cs:line 154
   at void ICSharpCode.TextEditor.TextEditorControlBase.set_Text(string value) in D:/Build/gitextensions3_dev/externals/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs:line 128
   at bool GitUI.Editor.FileViewerInternal.SetText(string text, Action openWithDifftool, ViewMode viewMode, bool useGitColoring, string contentIdentification) in D:/Build/gitextensions3_dev/src/app/GitUI/Editor/FileViewerInternal.cs:line 291
   at Task GitUI.Editor.FileViewer.ViewPrivateAsync(FileStatusItem item, string fileName, string text, int? line, Action openWithDifftool, ViewMode viewMode, bool useGitColoring, CancellationToken cancellationToken)+() => { } in D:/Build/gitextensions3_dev/src/app/GitUI/Editor/FileViewer.cs:line 942
   at async Task GitUI.Editor.FileViewer.ShowOrDeferAsync(long contentLength, Func<Task> showFunc) in D:/Build/gitextensions3_dev/src/app/GitUI/Editor/FileViewer.cs:line 1102
   at async Task GitUI.GitUIExtensions.ViewChangesAsync(FileViewer fileViewer, FileStatusItem item, CancellationToken cancellationToken, int? line, string defaultText, Action openWithDiffTool, string additionalCommandInfo, bool forceFileView) in D:/Build/gitextensions3_dev/src/app/GitUI/GitUIExtensions.cs:line 206
   at async Task GitUI.CommandsDialogs.RevisionDiffControl.ShowSelectedFileDiffAsync(bool ensureNoSwitchToFilter, int? line) in D:/Build/gitextensions3_dev/src/app/GitUI/CommandsDialogs/RevisionDiffControl.cs:line 479
   at async void GitUI.CommandsDialogs.RevisionDiffControl.ShowSelectedFile(bool ensureNoSwitchToFilter, int? line)+(?) => { } in D:/Build/gitextensions3_dev/src/app/GitUI/CommandsDialogs/RevisionDiffControl.cs:line 494
   at async void GitUI.TaskManager.InvokeAndForget(Control control, Func<Task> asyncAction, CancellationToken cancellationToken)+(?) => { } [1] in D:/Build/gitextensions3_dev/src/app/GitExtUtils/GitUI/TaskManager.cs:line 119
   at async Task GitUI.TaskManager.HandleExceptionsAsync(Func<Task> asyncAction, Func<Exception, Task> handleExceptionAsync) in D:/Build/gitextensions3_dev/src/app/GitExtUtils/GitUI/TaskManager.cs:line 32

Steps to reproduce

??? Copilot running UI integration tests of an unrelated change (for virtual ref context menu)

Did this work in previous version of GitExtensions?

yes

Diagnostics

No response

Source: gitextensions/gitextensions