UWP App crashes on startup
Asked Answered
A

1

7

we have developed a UWP app which works fine on most of the devices. However, a customer has managed devices with Windows 10 1511 and the app crashes immediately after start. We are not able to attach a VS debugger to it so we used windbg to launch and break the application. From what I can see, the output of windbg below is where the application crashes.

The App Launch Event is stripped down to nearly empty, so there is no code running after startup but still the app crashes.

Any idea how to track this further?

thanks

ModLoad: 00007ffe`ec020000 00007ffe`ec27f000   C:\Windows\SYSTEM32\dwrite.dll
ModLoad: 00007ffe`cfef0000 00007ffe`d0075000   C:\Windows\System32\Windows.Globalization.dll
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
windows\dxaml\xcp\components\deferral\customwriterruntimeobjectcreator.cpp(222)\Windows.UI.Xaml.dll!00007FFED0E99DA7: (caller: 00007FFED0B7A503) Exception(1) tid(2278) 80004005 Unspecified error
(241c.2278): C++ EH exception - code e06d7363 (first chance)
(241c.2278): C++ EH exception - code e06d7363 (first chance)
windows\dxaml\xcp\core\core\elements\style.cpp(582)\Windows.UI.Xaml.dll!00007FFED0D851D9: (caller: 00007FFED0BFB365) ReturnHr(1) tid(2278) 80004005 Unspecified error
windows\dxaml\xcp\components\deferral\customwriterruntimeobjectcreator.cpp(113)\Windows.UI.Xaml.dll!00007FFED0DEEE15: (caller: 00007FFED0B0B954) Exception(2) tid(2278) 80004005 Unspecified error
(241c.2278): C++ EH exception - code e06d7363 (first chance)
(241c.2278): C++ EH exception - code e06d7363 (first chance)
windows\dxaml\xcp\components\resources\resourcedictionary2.cpp(48)\Windows.UI.Xaml.dll!00007FFED0D67F6D: (caller: 00007FFED0B67966) ReturnHr(2) tid(2278) 80004005 Unspecified error
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
(241c.2278): CLR exception - code e0434352 (first chance)
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
ModLoad: 00007ffe`ea590000 00007ffe`ea5f8000   C:\Windows\System32\mscoree.dll
ModLoad: 00007ffe`e9630000 00007ffe`e96cd000   C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll
ModLoad: 00007ffe`ea590000 00007ffe`ea5f8000   C:\Windows\System32\mscoree.dll
ModLoad: 00007ffe`e9630000 00007ffe`e96cd000   C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll
(241c.2278): CLR exception - code e0434352 (first chance)
(241c.2278): CLR exception - code e0434352 (first chance)
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
(241c.2278): Windows Runtime Originate Error - code 40080201 (first chance)
ntdll!NtWaitForMultipleObjects+0x14:
00007ffe`f7b25c24 c3              ret
0:000> g
       ^ No runnable debuggees error in 'g'

Update 1

I did further testing and it came out, that when i remove the reference of a shared dictionary with some xaml styles in it, the app works, even on 1511. I checked all the references and played around but none of it makes it work on 1511. I could truly not see what was introduced in 1607 what was not already there with 1511. Again, all works well on 1607 & 1703 builds. Here is the code:

Project 1 (Main UWP App)

App.xaml

<Application
x:Class="XXXXXXXXXXXXXXXXXXXXXX"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="XXXXXXXXXXXXXXXXXXXX"
RequestedTheme="Light">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ms-appx:///SDX.Library/SdxStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Project 2 (Empty UWP Project, with only Styles & Assets) SDX.Library.dll

Styles.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="SdxColors.xaml" />
    <ResourceDictionary Source="SdxControls.xaml" />
</ResourceDictionary.MergedDictionaries>

SdxColors.xaml

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<SolidColorBrush x:Key="DarkGrey" Color="#FF333333"/>
<SolidColorBrush x:Key="DarkGrey40p" Color="#FFADADAD"/>
<SolidColorBrush x:Key="DarkGrey80p" Color="#5C5C5C"/>
<SolidColorBrush x:Key="InteractionBlue" Color="#FF1781E3"/>
<SolidColorBrush x:Key="BlueRollover" Color="#FF0851DA"/>

<SolidColorBrush x:Key="Successfull" Color="#FF25B252" />
<SolidColorBrush x:Key="Warning" Color="#FFFF8B2E" />
<SolidColorBrush x:Key="Peppermint" Color="#FF0EABA9" />

SdxControls.xaml

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">

<FontFamily x:Key="TheSansB4SemiLight">Assets/Fonts/TheSansB_400_.ttf#TheSans B4 SemiLight</FontFamily>
<FontFamily x:Key="TheSansB5Plain">Assets/Fonts/TheSansB_500_.ttf#TheSans B5 Plain</FontFamily>

<Style TargetType="Button">
    <Setter Property="Background" Value="{ThemeResource InteractionBlue}"/>
    <Setter Property="Foreground" Value="{ThemeResource ButtonForeground}"/>
    <Setter Property="BorderBrush" Value="{ThemeResource ButtonBorderBrush}"/>
    <Setter Property="BorderThickness" Value="{ThemeResource ButtonBorderThemeThickness}"/>
    <Setter Property="Padding" Value="32,8,32,8"/>
    <Setter Property="HorizontalAlignment" Value="Left"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="FontFamily" Value="{StaticResource TheSansB4SemiLight}"/>
    <Setter Property="FontWeight" Value="Normal"/>
    <Setter Property="FontSize" Value="18"/>
    <Setter Property="UseSystemFocusVisuals" Value="False"/>
    <Setter Property="FocusVisualMargin" Value="-3"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid x:Name="RootGrid" Background="{TemplateBinding Background}" CornerRadius="5" RenderTransformOrigin="0.5,0.5">
                    <Grid.RenderTransform>
                        <CompositeTransform/>
                    </Grid.RenderTransform>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal">
                                <VisualState.Setters>
                                    <Setter Target="RootGrid.(Panel.Background)" Value="{StaticResource InteractionBlue}"/>
                                </VisualState.Setters>
                                <Storyboard>
                                    <PointerUpThemeAnimation Storyboard.TargetName="RootGrid"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="PointerOver">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="RootGrid">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BlueRollover}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <PointerUpThemeAnimation Storyboard.TargetName="RootGrid"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Pressed">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="RootGrid">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BlueRollover}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <PointerDownThemeAnimation Storyboard.TargetName="RootGrid"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Disabled">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="RootGrid">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource InteractionBlue}"/>
                                    </ObjectAnimationUsingKeyFrames>
                                    <DoubleAnimation Duration="0" To="0.4" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="RootGrid" d:IsOptimized="True"/>
                                    <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ContentPresenter" d:IsOptimized="True"/>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <ContentPresenter x:Name="ContentPresenter" AutomationProperties.AccessibilityView="Raw" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" Foreground="White"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Americanize answered 21/4, 2017 at 10:36 Comment(12)
An application doesn't crash on a first-chance exception, so the log you posted may or may not be related. You'll have to look out for second-chance exceptions (those are the ones, that haven't been caught, and are about to shut down a process).Thenceforward
Wondering if maybe the phones that are crashing are crashing because the phone is missing a capability you are using in the app.Shumpert
The app is running on Windows 10 Desktop. I pressed "g" in the debugger, but it seems that this ist the end. What would be right command set in windbg ?Americanize
Does it crash consistently on machines with 1511 (but works on 1607)? If yes I would take a guess that you are using a type in your code (or in the XAML) that was introduced in 1607, but doesn't exist in 1511.Harumscarum
@StefanWickMSFT Thanks Stefan. I further investigated and updated my post with some code. Any idea?Americanize
More than once, I've seen mysterious crashes like the one you describe that are traced back to re-templating a Control using a newer version of generic.xaml. Try removing that re-templated style for the Button. If that fixes the crashing, then you just need to redo that style based on an older version of generic.xaml.Nonsuit
@Nonsuit Thanks for the hint. Not sure if I know how to do this. Do I need to switch to an "older" version of Windows with "older" Dev Setup, do the styling again and build the solution once more? What would be your approach ?Americanize
To narrow it down, you could change the target version of the project to 10586 (which corresponds to the 1511 OS release). Now if you rebuild it, do you see any build/compile errors?Harumscarum
@StefanWickMSFT I do not see this version in VS2017. I am developing on 1703. Is it possible to install the SDK of 1511 on such a setup and then target it? The minimum Version of the project is 10586. Shouldn't that be enough to see build/compile errors ?Americanize
Okay, I removed the Button Template and it works. Oh man, took me hours to narrow it down. What could be wrong here? Thanks for all the help!Americanize
okay, that narrows it down. i'll write it up in a proper answer.Nonsuit
From the stack trace I would say the application does not crash but terminate instead. I would have proposed to look at the first chance exceptions, especially the CLR ones to get an idea of why it fails. It may be your own code that swallows exceptions.Stuccowork
N
4

Sounds like you're re-templating the Button control using a newer version of the SDK. It probably has references to resources that don't exist on 10586. You'll need to redo the re-templating using an older version. The easiest way is to copy/paste the Style from generic.xaml, which you can find here:

C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP

If you have the 10586 SDK installed, you should see a "10.0.10586.0" folder. In there, you'll find \Generic\generic.xaml. Open that file, and find the base Button style. Copy/paste the entire style into your SDXControls.xaml, replacing the Style that's there now.

This is the backward compatible version of the template. If all goes well, your app should no longer crash on 10586.

From there, you can tweak the template to match your design needs.

Tip: You can also add an "x:Key" property to your Style, then reference the Style explicitly on your Buttons as a StaticResource.

Nonsuit answered 21/4, 2017 at 16:38 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.