Невоспроизводимое исключение сбоя UWP-приложения stowed_exception 80131500 в процессе сертификации Windows Store

#c# #uwp #windows-10-universal #windows-store

#c# #uwp #Windows-10-универсальный #Windows-store

Вопрос:

Недавно я не смог несколько раз пройти сертификацию своего приложения UWP. Команда сертификации всегда говорит мне, что при запуске / запуске происходит сбой. Я не могу воспроизвести сбой самостоятельно, даже если у меня есть трассировка стека. Если кто-нибудь столкнется с подобной проблемой или какой-либо идеей, я могу двигаться вперед, это будет здорово.

Вещи, которые я пробовал, но не смог воспроизвести сбой:

  • Запустите Windows App Cert Kit, пройдите без сбоев или проблем.
  • Запустите приложение в режиме выпуска с помощью .Включена встроенная цепочка инструментов NET.
  • Установите и запустите пакет, который будет загружен в магазин Windows.
  • Создайте приложение с боковой загрузкой и установите его на другое устройство Windows 10, не предназначенное для разработки.

Записанный стек сбоев выглядит следующим образом

 appname::app onlaunched()
stowed_exception 80131500: stowed_exception

combase.dll    RoOriginateLanguageException() error.cpp:1504
System.Private.Interop    System::Runtime::InteropServices::ExceptionHelpers OriginateLanguageException() ExceptionHelpers.cs:113
System.Private.Interop    System::Runtime::InteropServices::ExceptionHelpers GetHRForExceptionWithErrorPropogationNoThrow() ExceptionHelpers.cs:219
System.Private.Interop    System::Runtime::InteropServices::McgMarshal GetHRForExceptionWinRT() McgMarshal.cs:1239
appname.UniversalWindows.McgInterop.dll    __Interop::ReverseComStubs.Stub_12_System __Canon_$catch$0() SharedStubs.g.cs:11147
mrt100_app.dll    RhpCallCatchFunclet2() exceptionhandling.asm:438
mrt100_app.dll    System::Runtime::EH DispatchEx() ExceptionHandling.cs:683
mrt100_app.dll    System::Runtime::EH RhThrowEx() ExceptionHandling.cs:552
mrt100_app.dll    RhpThrowEx2() exceptionhandling.asm:198
System.Private.Interop    System::Runtime::InteropServices::McgMarshal ThrowOnExternalCallFailed() McgMarshal.cs:1267
appname.UniversalWindows.McgInterop.dll    __Interop::ComCallHelpers Call() SharedStubs.g.cs:8527
appname.UniversalWindows.McgInterop.dll    Windows::UI::Xaml::Controls::IFrame__Impl::Stubs Navigate() ImplTypes.g.cs:158360
appname.UniversalWindows.McgInterop.dll    Windows::UI::Xaml::Controls::Frame Navigate() SafeTypes.g.cs:44489
appname.UniversalWindows.exe    appname::App OnLaunched() App.xaml.cs:76
System.Private.Threading    System::Progress$1_$89_System::VoidValueTypeParameter_.System.IProgress_T_ Report() SafeTypes.g.cs:23264
appname.UniversalWindows.McgInterop.dll    __Interop::ReverseComStubs.Stub_12_System __Canon_() SharedStubs.g.cs:11130
appname.UniversalWindows.McgInterop.dll    Windows::UI::Xaml::IApplicationOverrides__Impl::Vtbl OnLaunched__n() ImplTypes.g.cs:138287
Windows.UI.Xaml.dll    DirectUI::FrameworkApplicationGenerated OnLaunchedProtected() frameworkapplication.g.cpp:502
Windows.UI.Xaml.dll    DirectUI::FrameworkView OnActivated() frameworkview_partial.cpp:267
Windows.UI.Xaml.dll    Microsoft::WRL::Details::DelegateArgTraits_long (__cdecl Windows::Foundation::ITypedEventHandler_impl_Windows::Foundation::Internal::AggregateType_Windows::UI::Core::CoreWindow *,Windows::UI::Core::ICoreWindow *_,IInspectable *_ *)() event.h:245
Microsoft::WRL::InvokeTraits_-2_::InvokeDelegates__lambda_3ad0adb09957fd62cbc86618ebbeb8fa_,Windows::Foundation::ITypedEventHandler_Windows::ApplicationModel::Core::CoreApplicationView *,Windows::ApplicationModel::Activation IActivatedEventArgs *_ _() internalevent.h:119
twinapi.appcore.dll    Windows::ApplicationModel::Core::CoreApplicationView Activate() coreapplicationview.cpp:545
rpcrt4.dll    Invoke() invoke.asm:183
rpcrt4.dll    Ndr64StubWorker() srvcall.cxx:392
rpcrt4.dll    NdrStubCall3() srvwrap.cxx:166
combase.dll    CStdStubBuffer_Invoke() stub.cxx:1446
rpcrt4.dll    CStdStubBuffer_Invoke() ndrfwds.cxx:182
combase.dll    ObjectMethodExceptionHandlingAction__lambda_c9f3956a20c9da92a64affc24fdd69ec_ _() excepn.hxx:87
combase.dll    DefaultStubInvoke() channelb.cxx:1452
combase.dll    SyncServerCall StubInvoke() servercall.hpp:826
combase.dll    ServerCall ContextInvoke() ctxchnl.cxx:1418
combase.dll    ASTAInvokeInApartment() applicationsta.cpp:470
combase.dll    AppInvoke() channelb.cxx:1182
combase.dll    ComInvokeWithLockAndIPID() channelb.cxx:2290
combase.dll    ThreadDispatch() chancont.cxx:416
combase.dll    ModernSTAState HandleMessage() modernsta.cpp:472
combase.dll    ModernSTAWaitContext HandlePriorityEventsFromMessagePump() modernsta.cpp:1550
Windows.UI.dll    Windows::UI::Core::CDispatcher ProcessMessage() dispatcher.cpp:339
Windows.UI.dll    Windows::UI::Core::CDispatcher WaitAndProcessMessagesInternal() dispatcher.cpp:1953
Windows.UI.dll    Windows::UI::Core::CDispatcher WaitAndProcessMessages() dispatcher.cpp:461
twinapi.appcore.dll    _lambda_643db08282a766b00cec20194396f531_ operator() coreapplicationviewagilecontainer.cpp:1145
SHCore.dll    _WrapperThreadProc() thread.cpp:321
ntdll.dll    RtlUserThreadStart() rtlstrt.c:1152
  

Это в строке 76 моего App.cs, если это актуально.

 rootFrame.Navigate(typeof(InitializePage), e.Arguments);
  

Ранее приложение прошло бесчисленное количество отправок в Windows Store без проблем, поэтому я совершенно не представляю, что произойдет сейчас.

Ответ №1:

Наконец, команда .NET native помогла мне решить эту проблему. Это было приложение слишком большое для компиляции с помощью 32-битного компилятора, и некоторое время не хватало памяти. Даже если компиляция прошла успешно, может произойти случайный сбой. Добавление true к PropertyGroup в project помогает решить проблему.

Комментарии:

1. Можете ли вы объяснить, куда вы добавляете true plz

2. Хорошо, узнал в вашем блоге: «У нас есть 64-разрядный доступный компилятор, который может работать с большим объемом памяти. Можете ли вы попробовать добавить <Use64BitCompiler>true</Use64BitCompiler> в группу свойств в вашем основном файле CSPROJ? »

Ответ №2:

Согласно вашему описанию, ваше приложение, вероятно, работает по-разному на компьютерах с разной конфигурацией, поэтому для некоторых значений необходимо установить языковые или региональные настройки или что-то подобное, чтобы вызвать сбой приложения.

К сожалению, отслеживание стека UWP происходит из скомпилированного приложения, что делает его бесполезным при поиске причины в вашем коде.

Комментарии:

1. Спасибо за ваше предложение. Я протестировал несколько регионов и языков, но также не смог воспроизвести сбой, включая US-en, JP-jp, MY-en. Просто напишите команде сертификации, надеюсь, они смогут ответить, какой регион и язык они на самом деле используют.