microsoft / microsoft/terminal

[1.23] PatternTree crash after closing two panes in oen tab

Open
#18,049 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area-Output Issue-Bug Product-Terminal Severity-Crash
Dominant language
C++
Stars
105k
Forks
9.6k
Avg merge
3d 17h
Merged PRs (30d)
29

Description

### Windows Terminal version

Canary 2851

### Windows build number

_No response_

### Other Software

_No response_

### Steps to reproduce

Dunno - closed two shells inside panes in the same tab with `^D`

### Expected Behavior

_No response_

### Actual Behavior

```
Microsoft.Terminal.Control.dll!Microsoft::Console::Render::Renderer::TriggerRedraw(const Microsoft::Console::Types::Viewport & region) Line 262 C++
Microsoft.Terminal.Control.dll!Microsoft::Terminal::Core::Terminal::_InvalidateFromCoords(const til::point start, const til::point end) Line 808 C++
[Inline Frame] Microsoft.Terminal.Control.dll!Microsoft::Terminal::Core::Terminal::_InvalidatePatternTree::__l2::::operator()(const interval_tree::Interval &) Line 774 C++
> [Inline Frame] Microsoft.Terminal.Control.dll!std::for_each(std::_Vector_const_iterator>>>) Line 435 C++
Microsoft.Terminal.Control.dll!interval_tree::IntervalTree::visit_all<`Microsoft::Terminal::Core::Terminal::_InvalidatePatternTree'::`2'::>(Microsoft::Terminal::Core::Terminal::_InvalidatePatternTree::__l2:: f) Line 308 C++
[Inline Frame] Microsoft.Terminal.Control.dll!Microsoft::Terminal::Core::Terminal::_InvalidatePatternTree() Line 771 C++
Microsoft.Terminal.Control.dll!Microsoft::Terminal::Core::Terminal::UpdatePatternsUnderLock() Line 1192 C++
Microsoft.Terminal.Control.dll!winrt::Microsoft::Terminal::Control::implementation::ControlCore::_setupDispatcherAndCallbacks::__l2::::operator()() Line 200 C++
[Inline Frame] Microsoft.Terminal.Control.dll!std::_Func_class::operator()() Line 920 C++
[Inline Frame] Microsoft.Terminal.Control.dll!std::invoke(std::function &) Line 1704 C++
[Inline Frame] Microsoft.Terminal.Control.dll!std::_Apply_impl(std::function &) Line 1076 C++
[Inline Frame] Microsoft.Terminal.Control.dll!std::apply(std::function &) Line 1087 C++
[Inline Frame] Microsoft.Terminal.Control.dll!til::throttled_func<1,0>::_trailing_edge() Line 196 C++
Microsoft.Terminal.Control.dll!til::throttled_func<1,0>::_timer_callback(_TP_CALLBACK_INSTANCE * __formal, void * context, _TP_TIMER * __formal) Line 184 C++
```

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.

Research direction

Start with Terminal::_InvalidatePatternTree and UpdatePatternsUnderLock in the Microsoft.Terminal.Control.dll stack trace, focusing on lines 771-808 and Renderer::TriggerRedraw at line 262. Try reproducing the crash by closing two shells in panes within one tab using Ctrl+D; done means the operation no longer crashes Windows Terminal.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cli, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.