dotnet / maui

.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
https://dot.net/maui
MIT License
22.2k stars 1.75k forks source link

Label control with TextType set to Html not able to render some HTML fragments on Windows and app does crash/not come up at all due to this #11509

Open martin-honnen opened 1 year ago

martin-honnen commented 1 year ago

Description

I am trying to use the Label control with TextType set to Html and found that on Windows that might make my app crash once I do that with certain samples of HTML markup assigned as Text, or, for this sample test case with a static Label and the TextType set as Html with some certain, seemingly harmless HTML markup like <Label TextType="Html"><![CDATA[<p>This is paragraph 1.<p>This is paragraph 2.]]></Label>, the app window doesn't come up at all.

Steps to Reproduce

  1. Create a MAUI up by cloning and checking out branch https://github.com/martin-honnen/MauiLabelTextTypeHtmlTests/tree/ParagraphsCrash from the repository https://github.com/martin-honnen/MauiLabelTextTypeHtmlTests
  2. Try to run the app under Windows and Android.
  3. Under Windows no app Window appears at all while under Android the app appears and the Label renders the HTML.

Link to public reproduction project repository

https://github.com/martin-honnen/MauiLabelTextTypeHtmlTests/tree/ParagraphsCrash

Version with bug

7.0 (current)

Last version that worked well

Unknown/Other

Affected platforms

Windows

Affected platform versions

Windows 11, maui-windows 7.0.49/7.0.100

Did you find any workaround?

No, it seems certain, seemingly harmless/simple HTML fragments set as Text of a Label with TextType="Html" make the app not show up at all when set statically (or make the app window crash/disappear when assigned dynamically after the app start).

Relevant log output

"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: DefaultDomain): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Private.CoreLib.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\MauiLabelTextTypeHtmlTests.dll" geladen. Symbole wurden geladen.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Runtime.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\WinRT.Runtime.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Runtime.InteropServices.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Collections.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Collections.Concurrent.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Threading.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.WinUI.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Runtime.CompilerServices.Unsafe.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Private.Uri.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.ObjectModel.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.ComponentModel.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Numerics.Vectors.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Windows.SDK.NET.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Security.Cryptography.Algorithms.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Security.Cryptography.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Security.Cryptography.Csp.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Security.Cryptography.Primitives.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Linq.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.InteractiveExperiences.Projection.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Maui.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Maui.Controls.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Extensions.DependencyInjection.Abstractions.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Maui.Essentials.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Maui.Controls.Xaml.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Extensions.Logging.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Extensions.Logging.Debug.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Extensions.Configuration.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Extensions.Configuration.Abstractions.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Extensions.Primitives.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Xml.ReaderWriter.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Private.Xml.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Maui.Graphics.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Net.Primitives.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Extensions.Logging.Abstractions.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.ComponentModel.TypeConverter.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Maui.Graphics.Win2D.WinUI.Desktop.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Extensions.Options.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Extensions.DependencyInjection.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Diagnostics.Tracing.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Threading.ThreadPool.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Memory.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Linq.Expressions.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Reflection.Emit.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "Snippets" geladen. 
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\Microsoft.Maui.Controls.Compatibility.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Reflection.Emit.Lightweight.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Reflection.Emit.ILGeneration.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Reflection.Primitives.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Runtime.Loader.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Text.RegularExpressions.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Xml.XDocument.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Private.Xml.Linq.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Threading.Thread.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Diagnostics.StackTrace.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Reflection.Metadata.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
"MauiLabelTextTypeHtmlTests.exe" (CoreCLR: clrhost): "C:\Users\marti\source\repos\MauiLabelTextTypeHtmlTests\bin\Debug\net7.0-windows10.0.19041.0\win10-x64\AppX\System.Collections.Immutable.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
Das Programm "[34280] MauiLabelTextTypeHtmlTests.exe" wurde mit Code 0 (0x0) beendet.
martin-honnen commented 1 year ago

The relevant code seems to be in https://github.com/dotnet/maui/blob/17790124c566d73001761ea93a447876e4ed0b90/src/Controls/src/Core/Platform/Windows/Extensions/TextBlockExtensions.cs#L59 where

switch (label.TextType)
            {
                case TextType.Html:
                    platformControl.UpdateTextHtml(label);
                    break;

calls platformControl.UpdateTextHtml(label) doing (in https://github.com/dotnet/maui/blob/17790124c566d73001761ea93a447876e4ed0b90/src/Compatibility/Core/src/Windows/LabelRenderer.cs#L365)

        void UpdateTextHtml(TextBlock textBlock)
        {
            var text = Element.Text ?? String.Empty;

            // Just in case we are not given text with elements.
            var modifiedText = string.Format("<div>{0}</div>", text);
            modifiedText = Regex.Replace(modifiedText, "<br>", "<br></br>", RegexOptions.IgnoreCase);
            // reset the text because we will add to it.
            Control.Inlines.Clear();
            try
            {
                var element = XElement.Parse(modifiedText);
                LabelHtmlHelper.ParseText(element, Control.Inlines, Element);
            }
            catch (Exception)
            {
                // if anything goes wrong just show the html
                textBlock.Text = global::Windows.Data.Html.HtmlUtilities.ConvertToText(Element.Text);
            }
        }

For the used HTML markup sample that crashes, I would think that XElement.Parse(modifiedText) gives an exception so that textBlock.Text = global::Windows.Data.Html.HtmlUtilities.ConvertToText(Element.Text); should kick in as a fallback but somehow the global::Windows.Data.Html.HtmlUtilities.ConvertToText(Element.Text) seems to make app crash.

Does anyone know where/how this is implemented? I only find such a class/method if the UWP documentation.

martin-honnen commented 1 year ago

I have set up an NUnit test project targeting <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> and simple tests like

using Windows.Data.Html;

namespace WinUITest1;

public class Tests
{
    [SetUp]
    public void Setup()
    {
    }

    [Test]
    public void Test1()
    {
        Assert.DoesNotThrow(() =>
        {
            var result = HtmlUtilities.ConvertToText("<p>This is a test.</p>");
            Assert.AreEqual("This is a test.", result);
        });   
    }

    [Test]
    public void Test2()
    {
        Assert.DoesNotThrow(() =>
        {
            var result = HtmlUtilities.ConvertToText("<p>This is paragraph 1.<p>This is paragraph 2.");
            Assert.AreEqual("This is paragraph 1.\nThis is paragraph 2.", result);
        });
    }
}

run through without any crashes/exceptions/problems.

So why could global::Windows.Data.Html.HtmlUtilities.ConvertToText(Element.Text) in MAUI cause problems?

ghost commented 1 year ago

We've moved this issue to the Backlog milestone. This means that it is not going to be worked on for the coming release. We will reassess the backlog following the current release and consider this item at that time. To learn more about our issue management process and to have better expectation regarding different types of issues you can read our Triage Process.

XamlTest commented 1 year ago

Verified this on Visual Studio Enterprise 17.7.0 Preview 1.0. Repro on Windows 11 with provided Project: MauiLabelTextTypeHtmlTests.zip

Brosten commented 2 months ago

We are having similar issues with rendering some types of html in the label control. Windows freezes and iOS throws null-ref.