Windows Store App Access Violation Exception only on Windows 10

Windows Store App Access Violation Exception only on Windows 10

我有 Windows 个应用商店应用程序,该应用程序已在应用商店中使用了 2 年。 Windows 10 发布后,我遇到了很多崩溃。我可以重现崩溃,但只能在 Windows 10,而不是 8 或 8.1 上重现,而且,我能够通过开发人员控制台看到此崩溃仅发生在 Windows 10 上。 windows 10 ~ 1000 一个月有很多这样的崩溃。

崩溃序列:我打开页面,应用程序挂起一秒钟然后关闭,没有任何报告建议。

当我使用 visual studio 调试应用程序时,应用程序失败并出现异常:

Access violation reading location 0x00000090 in Windows.Ui.Xaml.dll

来自 dev.windows 控制台的堆栈跟踪:

windows_ui_xaml DirectUI::CCueRenderer::Initialize  0x154
windows_ui_xaml DirectUI::CTimedTextSource::Initialize  0xE0
windows_ui_xaml DirectUI::CTimedTextSource::Create  0x60
windows_ui_xaml DirectUI::MediaElement::EnableTimedText 0x60
windows_ui_xaml DirectUI::MediaElement::HandleMediaOpened   0x21
windows_ui_xaml DirectUI::MediaElement::OnMediaOpened   0x4D
windows_ui_xaml CFxCallbacks::MediaElement_OnMediaOpened    0x20
windows_ui_xaml CMediaElement::OpenMedia    0x156
windows_ui_xaml CMediaElement::HandleSourceReadyEvent   0x12
windows_ui_xaml CMediaElement::HandleMediaEvent 0x90
windows_ui_xaml CMediaQueue::ProcessQueue   0x67
windows_ui_xaml CMediaQueueManager::ProcessQueues   0x90
windows_ui_xaml CCoreServices::Tick 0x246
windows_ui_xaml CCoreServices::NWDrawTree   0x2F1
windows_ui_xaml CCoreServices::NWDrawMainTree   0xB7
windows_ui_xaml CWindowRenderTarget::Draw   0x73
windows_ui_xaml CXcpBrowserHost::OnTick 0x1CB
windows_ui_xaml CXcpDispatcher::Tick    0x88
windows_ui_xaml CXcpDispatcher::OnReentrancyProtectedWindowMessage  0x6F
windows_ui_xaml CXcpDispatcher::WindowProc  0xE0
user32  _InternalCallWinProc    0x2B
user32  UserCallWinProcCheckWow 0x1F0
user32  DispatchMessageWorker   0x231
user32  DispatchMessageW    0x10
windows_ui  Windows::UI::Core::CDispatcher::ProcessMessage  0x356
windows_ui  Windows::UI::Core::CDispatcher::WaitAndProcessMessages  0x129
windows_ui  Windows::UI::Core::CDispatcher::ProcessEvents   0x75
windows_ui_xaml CJupiterWindow::RunCoreWindowMessageLoop    0x55
windows_ui_xaml CJupiterControl::RunMessageLoop 0x25
windows_ui_xaml DirectUI::DXamlCore::RunMessageLoop 0x1E
windows_ui_xaml DirectUI::FrameworkView::Run    0x1A
twinapi_appcore Windows::ApplicationModel::Core::CoreApplicationView::Run   0x3D
twinapi_appcore _lambda_8b2420e462ae079d580fd8e4ff08c89d_::_helper_func_stdcall_    0xAC
shcore  _WrapperThreadProc  0xCA
kernel32    BaseThreadInitThunk 0x24
ntdll   __RtlUserThreadStart    0x2F
ntdll   _RtlUserThreadStart

这是我下载报告时的错误描述:

NULL_CLASS_PTR_READ_c0000005_Windows.UI.Xaml.dll
NULL_POINTER_READ_c0000005_Windows.UI.Xaml.dll

有没有人也遇到过与 windows 10 相同的问题? 据我了解,堆栈跟踪中没有托管(我的)函数调用,这是否意味着它是 Windows 10 个错误?

如@Pooley 所述,此代码会在 windows 10 台计算机上导致错误:

 var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("msappx:///Resources/Sounds/" + name + ".mp3"));
 var stream = await file.OpenAsync(FileAccessMode.Read);
 var mediaElement = new MediaElement();
 mediaElement.SetSource(stream, file.FileType); mediaElement.Play();

我刚刚解决了一个非常相似的问题,即通用应用程序会因读取访问冲突而崩溃。堆栈跟踪看起来与您的非常相似,大多数时候它在 CXcpDispatcher::Tick 的某个地方崩溃了。尽管并非总是如此,但堆栈跟踪和异常本身有时会有所不同。

原因是本机 c++ class 由瘦 C# 包装器导入 dll (p/invoke)。当应用程序持有该 class 的实例时,它会时不时地崩溃。

c++ class 有一个 std::string 类型的私有成员。删除该成员后,通用应用程序停止崩溃。 C++ 编译器实际上为该成员发出警告 C4251