microsoft / microsoft/microsoft-ui-xaml
InputNonClientPointerSource::GetForWindowId crashes app
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 8.4k
- Forks
- 942
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 105
Description
### Describe the bug
WinUI app crashes when XAML Hot Reload is enabled
### Steps to reproduce the bug
Follow repro steps in https://github.com/dotnet/maui/issues/24293
### Expected behavior
App does not crash
### Screenshots
_No response_
### NuGet package version
None
### Windows version
_No response_
### Additional context
Crash dump available upon request. Too big to attach. Below is partial call stack. Comparing to a blank WinUI app there seems to be missing InputNonClientPointerSource HWND, which correlates with offender API InputNonClientPointerSource::GetForWindowId.

Microsoft.UI.Input.dll!WRL2ContextSession::GetDispatcherQueue() Line 312
Microsoft.UI.Input.dll!InputNonClientPointerSourceWinRT::Configure_DispatcherQueue() Line 128
Microsoft.UI.Input.dll!InputNonClientPointerSourceWinRTStatics::GetForWindowIdHelper(Microsoft::UI::WindowId windowId, Microsoft::UI::Input::IInputNonClientPointerSource * * instance, bool isPublicApi) Line 1368
[Inline Frame] Microsoft.VisualStudio.DesignTools.WinUITap.dll!winrt::impl::consume_Microsoft_UI_Input_IInputNonClientPointerSourceStatics::GetForWindowId(const winrt::Microsoft::UI::WindowId & windowId) Line 461
[Inline Frame] Microsoft.VisualStudio.DesignTools.WinUITap.dll!winrt::Microsoft::UI::Input::InputNonClientPointerSource::GetForWindowId::__l2::::operator()(const winrt::Microsoft::UI::Input::IInputNonClientPointerSourceStatics &) Line 691
Microsoft.VisualStudio.DesignTools.WinUITap.dll!winrt::impl::factory_cache_entry::call<`winrt::Microsoft::UI::Input::InputNonClientPointerSource::GetForWindowId'::`2':: &>(winrt::Microsoft::UI::Input::InputNonClientPointerSource::GetForWindowId::__l2:: & callback) Line 6107
[Inline Frame] Microsoft.VisualStudio.DesignTools.WinUITap.dll!winrt::impl::call_factory(winrt::Microsoft::UI::Input::InputNonClientPointerSource::GetForWindowId::__l2:: &&) Line 6129
Microsoft.VisualStudio.DesignTools.WinUITap.dll!winrt::Microsoft::UI::Input::InputNonClientPointerSource::GetForWindowId(const winrt::Microsoft::UI::WindowId & windowId) Line 691
Microsoft.VisualStudio.DesignTools.WinUITap.dll!Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::InAppMenu::InAppMenu(Microsoft::VisualStudio::DesignTools::UwpTap::ActivationFactoryProviderBase & factoryProvider, std::shared_ptr identityService, Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::InAppMenuModel & model, winrt::Microsoft::UI::Xaml::Controls::Panel uiLayer, winrt::Microsoft::UI::Xaml::XamlRoot xamlRoot, HWND__ * hostHwnd) Line 162
[Inline Frame] Microsoft.VisualStudio.DesignTools.WinUITap.dll!std::make_unique(Microsoft::VisualStudio::DesignTools::UwpTap::ActivationFactoryProviderBase & <_Args_0>, std::shared_ptr &) Line 3465
Microsoft.VisualStudio.DesignTools.WinUITap.dll!Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::UILayerManager::OnInAppMenuStateChanged() Line 507
[Inline Frame] Microsoft.VisualStudio.DesignTools.WinUITap.dll!std::_Func_class::operator()() Line 854
Microsoft.VisualStudio.DesignTools.WinUITap.dll!Microsoft::VisualStudio::DesignTools::UwpTap::WinrtRunOnUIThread>(const Microsoft::VisualStudio::DesignTools::UwpTap::DispatcherHelper & dispatcher, Microsoft::VisualStudio::DesignTools::UwpTap::DispatcherPriority function, std::function) Line 178
[Inline Frame] Microsoft.VisualStudio.DesignTools.WinUITap.dll!Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::DispatcherBindingBase::Initialize::__l5::::operator()() Line 27
[Inline Frame] Microsoft.VisualStudio.DesignTools.WinUITap.dll!std::invoke(Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::DispatcherBindingBase::Initialize::__l5:: &) Line 1731
Microsoft.VisualStudio.DesignTools.WinUITap.dll!std::_Func_impl_no_alloc<`Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::DispatcherBindingBase::Initialize'::`5'::,void>::_Do_call() Line 808
[Inline Frame] Microsoft.VisualStudio.DesignTools.WinUITap.dll!std::_Func_class::operator()() Line 854
Microsoft.VisualStudio.DesignTools.WinUITap.dll!Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::SimpleBinding::Initialize(std::function updateView, bool invokeValueHandler) Line 48
Microsoft.VisualStudio.DesignTools.WinUITap.dll!Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::DispatcherBindingBase::Initialize(std::function updateView, bool invokeValueHandler) Line 24
Microsoft.VisualStudio.DesignTools.WinUITap.dll!Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::UILayerManager::SetBinding(Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::NotifyingValue & value, void(Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::UILayerManager::*)() memberFn) Line 364
Microsoft.VisualStudio.DesignTools.WinUITap.dll!Microsoft::VisualStudio::DesignTools::UwpTap::InAppUI::UILayerManager::Initialize() Line 137
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the reproduction steps in dotnet/maui#24293 and the partial call stack, especially the InputNonClientPointerSource::GetForWindowId path. Compare the missing InputNonClientPointerSource HWND with a blank WinUI app; done means XAML Hot Reload no longer crashes the app.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100