MahApps.Metro.IconPacks icon indicating copy to clipboard operation
MahApps.Metro.IconPacks copied to clipboard

UWP Crashes at Startup when built in Release mode when using some Icon Packs

Open MarkIvanDev opened this issue 2 years ago • 10 comments

Describe the bug When building a UWP app in release mode, the application crashes at startup due to a StackOverflow exception. Building using debug mode does not result to a crash for ALL icons. This only happens with the following Icon Packs:

  • Jam Icons
  • Material
  • Material Design
  • Modern
  • PICOL Icons
  • Pixelart Icons
  • Radix Icons
  • Remix Icon
  • RPG Awesome
  • Simple Icons
  • Typicons
  • Unicons
  • Vaadin Icons
  • Zondicons

To Reproduce Steps to reproduce the behavior:

  1. Extract and open the solution attached in this issue
  2. Uncomment the XAML tags for the Icon Packs marked with 'Bug' in the name and run in RELEASE mode.

Expected behavior The app should not crash at startup

Desktop Environment (please complete the following information):

  • IconPacks Version: 4.11.0
  • Visual Studio: 2022
  • UWP [10.0.17763 - 10.0.22000]

Repo MahAppsIcons.zip

Additional context This seems to be related to #138

MarkIvanDev avatar Apr 04 '22 15:04 MarkIvanDev

@MarkIvanDev Idk exactly why this happens. I can see that the XamlTypeInfo for Debug is different to Release but Idk why...

punker76 avatar Sep 13 '22 10:09 punker76

@MarkIvanDev If I disable "Compile with .NET Native tool chain" the app runs fine. That's the reason why I'm hate UWP!

image

punker76 avatar Sep 22 '22 09:09 punker76

Yes. It only runs when not compiling with .NET Native toolchain. I have also checked what is different with the icons with bugs from the ones that work correctly, and nothing stands out that might cause the problem. Although, I have read somewhere that there is a limit to the length of a string in a library. Maybe it is having problems with the massive icon data for those icon packs?

MarkIvanDev avatar Sep 28 '22 01:09 MarkIvanDev

@MarkIvanDev

Although, I have read somewhere that there is a limit to the length of a string in a library. Maybe it is having problems with the massive icon data for those icon packs?

But it's working on WPF. You can see it in action with the IconPacks browser.

punker76 avatar Sep 28 '22 18:09 punker76

@punker76

But it's working on WPF. You can see it in action with the IconPacks browser.

Yes. Maybe the string limitation is only enforced in .NET Native? Or .NET Native has a problem with a large number of static strings? I have tried creating a new package for UWP with the problematic icon packs using the same path data, but it still triggers the error stated above. But when I put the data inside a sqlite database and read from that, the error does not show and it compiles and runs successfully when using .NET Native.

MarkIvanDev avatar Sep 29 '22 01:09 MarkIvanDev

Interesting finding. Do you think source generators may be helpful in that case?

timunie avatar Sep 29 '22 16:09 timunie

Interesting finding. Do you think source generators may be helpful in that case?

If the source generators will only generate the same classes with the same static strings as data, I don't think it will make a difference. But I think if the path data will be put in resource files (.resx), I think we can work around the static string length limitation

MarkIvanDev avatar Oct 03 '22 07:10 MarkIvanDev

No, the idea was to generate the PathGeometry directly.

timunie avatar Oct 03 '22 08:10 timunie

@timunie Generating the path data directly is not possible, because of the different source of the icons. That’s why I didn’t publish my converter.

@MarkIvanDev I will try and look if the resx can help here.

punker76 avatar Oct 03 '22 08:10 punker76

@MarkIvanDev I will try and look if the resx can help here.

If there is anything I can help with, I'd love to.

MarkIvanDev avatar Oct 03 '22 09:10 MarkIvanDev