Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save metathinker/33d8cf0f191e92176f4f9852927f7e54 to your computer and use it in GitHub Desktop.
Save metathinker/33d8cf0f191e92176f4f9852927f7e54 to your computer and use it in GitHub Desktop.
=======================================
VERIFIER STOP 0000000000000305: pid 0x64: Incorrect object type for handle.
FFFFFFFFFFFFFFFF : Handle value. ==> INVALID_HANDLE_VALUE
0000006E33D0E2D8 : Object type name. Use du to display it ==> "Process"
00007FFE88E46900 : Expected object type name. Use du to display it ==> "Event"
0000000000000000 : Not used.
partial stack:
[0x3] vfbasics!AVrfpNtSetEvent + 0x34
[0x4] KERNELBASE!SetEvent + 0xd
[0x5] TerminalControl!Microsoft::Console::Render::Renderer::_NotifyPaintFrame + 0xa
[0x6] TerminalControl!Microsoft::Console::Render::Renderer::TriggerFontChange + 0xc9
[0x7] TerminalControl!winrt::Microsoft::Terminal::TerminalControl::implementation::TermControl::_UpdateFont + 0x16c
[0x8] TerminalControl!winrt::Microsoft::Terminal::TerminalControl::implementation::TermControl::_InitializeTerminal + 0x301
(Between stack frames 4 and 5, a call to ...::Render::RenderThread::NotifyPaint()
through the ...::Render::IRenderThread::NotifyPaint() interface has been inlined.)
This happens during Terminal app startup.
This is because in TermControl::_InitializeTerminal(), the TermControl
creates a RenderThread and passes it to the Renderer. However, the
TermControl failed to call RenderThread::Initialize() before passing it
to the Renderer, so when TermControl subsequently calls into Renderer,
it tries to use an uninitialized RenderThread.
The verifier break occurs because the RenderThread has
a handle to a Win32 event (_pEvent), the RenderThread is
uninitialized so the handle is null, and the wrong null value
was used for the HANDLE variable (not 0, but INVALID_HANDLE_VALUE).
=======================================
VERIFIER STOP 0000000000000305: pid 0x64: Incorrect object type for handle.
FFFFFFFFFFFFFFFF : Handle value. ==> INVALID_HANDLE_VALUE
0000006E33D0E198 : Object type name. Use du to display it ==> "Process"
00007FFE88E46900 : Expected object type name. Use du to display it ==> "Event"
0000000000000000 : Not used.
partial stack:
[0x3] vfbasics!AVrfpNtSetEvent + 0x34
[0x4] KERNELBASE!SetEvent + 0xd
[0x5] TerminalControl!Microsoft::Console::Render::Renderer::_NotifyPaintFrame + 0xa
[0x6] TerminalControl!Microsoft::Console::Render::Renderer::TriggerRedrawCursor + 0x156
[0x7] TerminalControl!Cursor::_RedrawCursorAlways + 0x24
[0x8] TerminalControl!Cursor::_RedrawCursor + 0x1e
[0x9] TerminalControl!Cursor::SetStyle + 0x2f
[0xa] TerminalControl!Microsoft::Terminal::Core::Terminal::UpdateSettings + 0x12b
[0xb] TerminalControl!Microsoft::Terminal::Core::Terminal::CreateFromSettings + 0x1e7
[0xc] TerminalControl!winrt::Microsoft::Terminal::TerminalControl::implementation::TermControl::_InitializeTerminal + 0x55e
Same as the previous stop, also in Terminal app startup.
The same problem just repeats itself again because
TermControl makes multiple calls into the Renderer
after giving that Renderer an uninitialized RenderThread.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment