Skip to content

StackOverflowException on FontFamily.FamilyNames #20641

@alexandrehtrb

Description

@alexandrehtrb

Describe the bug

Avalonia 11.3.11
.NET 10
Windows 11 23H2 x64

I am running some UI tests and this bug shows up and crashes the app.
Seems to be related to text font and typefaces.
This bug didn't happen with Avalonia 11.0.5.

Image

Stack trace:

>	Avalonia.Base.dll!Avalonia.Media.FontManager.TryGetGlyphTypeface(Avalonia.Media.Typeface typeface, out Avalonia.Media.IGlyphTypeface glyphTypeface) Linha 73	C#
 	Avalonia.Base.dll!Avalonia.Media.Typeface.GlyphTypeface.get() Linha 24	C#
 	Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextCharacters.CreateShapeableRun(System.ReadOnlyMemory<char> text, Avalonia.Media.TextFormatting.TextRunProperties defaultProperties, sbyte biDiLevel, Avalonia.Media.FontManager fontManager, ref Avalonia.Media.TextFormatting.TextRunProperties previousProperties) Linha 46	C#
 	Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextFormatterImpl.CoalesceLevels(System.Collections.Generic.IReadOnlyList<Avalonia.Media.TextFormatting.TextRun> textCharacters, System.ReadOnlySpan<sbyte> levels, Avalonia.Media.FontManager fontManager, Avalonia.Media.TextFormatting.FormattingObjectPool.RentedList<Avalonia.Media.TextFormatting.TextRun> processedRuns) Linha 391	C#
 	Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextFormatterImpl.ShapeTextRuns(System.Collections.Generic.IReadOnlyList<Avalonia.Media.TextFormatting.TextRun> textRuns, Avalonia.Media.TextFormatting.TextParagraphProperties paragraphProperties, Avalonia.Media.TextFormatting.FormattingObjectPool objectPool, Avalonia.Media.FontManager fontManager, out Avalonia.Media.FlowDirection resolvedFlowDirection) Linha 211	C#
 	Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextLayout.CreateTextLines() Linha 367	C#
 	Avalonia.Base.dll!Avalonia.Media.TextFormatting.TextLayout.TextLayout(Avalonia.Media.TextFormatting.ITextSource textSource, Avalonia.Media.TextFormatting.TextParagraphProperties paragraphProperties, Avalonia.Media.TextTrimming textTrimming, double maxWidth, double maxHeight, int maxLines) Linha 92	C#
 	Avalonia.Controls.dll!Avalonia.Controls.TextBlock.CreateTextLayout(string text)	Desconhecido
 	Avalonia.Controls.dll!Avalonia.Controls.TextBlock.ArrangeOverride(Avalonia.Size finalSize)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.Arrange(Avalonia.Rect rect) Linha 323	C#
 	Avalonia.Controls.dll!Avalonia.Controls.Presenters.ContentPresenter.ArrangeOverride(Avalonia.Size finalSize)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeOverride(Avalonia.Size finalSize) Linha 574	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Controls.dll!Avalonia.Controls.VirtualizingStackPanel.ArrangeOverride(Avalonia.Size finalSize)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeOverride(Avalonia.Size finalSize) Linha 574	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.Arrange(Avalonia.Rect rect) Linha 323	C#
 	Avalonia.Controls.dll!Avalonia.Controls.Presenters.ContentPresenter.ArrangeOverrideImpl(Avalonia.Size finalSize, Avalonia.Vector offset)	Desconhecido
 	Avalonia.Controls.dll!Avalonia.Controls.Presenters.ScrollContentPresenter.ArrangeWithAnchoring(Avalonia.Size finalSize)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.Arrange(Avalonia.Rect rect) Linha 323	C#
 	Avalonia.Controls.dll!Avalonia.Controls.Grid.ArrangeOverride(Avalonia.Size arrangeSize)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeOverride(Avalonia.Size finalSize) Linha 574	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.Arrange(Avalonia.Rect rect) Linha 323	C#
 	Avalonia.Controls.dll!Avalonia.Controls.Border.ArrangeOverride(Avalonia.Size finalSize)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.Arrange(Avalonia.Rect rect) Linha 323	C#
 	Avalonia.Controls.dll!Avalonia.Controls.Presenters.ContentPresenter.ArrangeOverride(Avalonia.Size finalSize)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.Arrange(Avalonia.Rect rect) Linha 323	C#
 	Avalonia.Controls.dll!Avalonia.Controls.Primitives.VisualLayerManager.ArrangeOverride(Avalonia.Size finalSize)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeOverride(Avalonia.Size finalSize) Linha 574	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.Arrange(Avalonia.Rect rect) Linha 323	C#
 	Avalonia.Controls.dll!Avalonia.Controls.LayoutTransformControl.ArrangeOverride(Avalonia.Size finalSize)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeCore(Avalonia.Rect finalRect) Linha 535	C#
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.ArrangeOverride(Avalonia.Size finalSize) Linha 574	C#
 	Avalonia.Controls.dll!Avalonia.Controls.WindowBase.ArrangeCore(Avalonia.Rect finalRect)	Desconhecido
 	Avalonia.Base.dll!Avalonia.Layout.Layoutable.Arrange(Avalonia.Rect rect) Linha 323	C#
 	Avalonia.Base.dll!Avalonia.Layout.LayoutManager.Arrange(Avalonia.Layout.Layoutable control) Linha 303	C#
 	Avalonia.Controls.dll!Avalonia.Controls.WindowBase.Show()	Desconhecido
 	Avalonia.Controls.dll!Avalonia.Controls.Primitives.Popup.Open()	Desconhecido
 	Avalonia.Base.dll!Avalonia.Reactive.LightweightObservableBase<Avalonia.AvaloniaPropertyChangedEventArgs<bool>>.PublishNext(Avalonia.AvaloniaPropertyChangedEventArgs<bool> value) Linha 165	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.EffectiveValue<bool>.NotifyValueChanged(Avalonia.PropertyStore.ValueStore owner, Avalonia.StyledProperty<bool> property, bool oldValue) Linha 382	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.EffectiveValue<bool>.SetAndRaise(Avalonia.PropertyStore.ValueStore owner, Avalonia.PropertyStore.IValueEntry value, Avalonia.Data.BindingPriority priority) Linha 170	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.ValueStore.ReevaluateEffectiveValue(Avalonia.AvaloniaProperty property, Avalonia.PropertyStore.EffectiveValue current, Avalonia.PropertyStore.IValueEntry changedValueEntry, bool ignoreLocalValue) Linha 913	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.ValueStore.Avalonia.Data.Core.IBindingExpressionSink.OnChanged(Avalonia.Data.Core.UntypedBindingExpressionBase instance, bool hasValueChanged, bool hasErrorChanged, object value, Avalonia.Data.Core.BindingError error) Linha 741	C#
 	Avalonia.Base.dll!Avalonia.Data.Core.UntypedBindingExpressionBase.PublishValue(object value, Avalonia.Data.Core.BindingError error) Linha 340	C#
 	Avalonia.Base.dll!Avalonia.Data.TemplateBinding.PublishValue() Linha 175	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.EffectiveValue<bool>.NotifyValueChanged(Avalonia.PropertyStore.ValueStore owner, Avalonia.StyledProperty<bool> property, bool oldValue) Linha 382	C#
 	Avalonia.Base.dll!Avalonia.StyledProperty<bool>.RouteSetCurrentValue(Avalonia.AvaloniaObject target, object value) Linha 188	C#
 	Avalonia.Base.dll!Avalonia.Data.TemplateBinding.WriteValueToSource(object value) Linha 85	C#
 	Avalonia.Base.dll!Avalonia.Data.TemplateBinding.OnTargetPropertyChanged(object sender, Avalonia.AvaloniaPropertyChangedEventArgs e) Linha 220	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.EffectiveValue<bool>.NotifyValueChanged(Avalonia.PropertyStore.ValueStore owner, Avalonia.StyledProperty<bool> property, bool oldValue) Linha 382	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.EffectiveValue<bool>.SetAndRaise(Avalonia.PropertyStore.ValueStore owner, Avalonia.PropertyStore.IValueEntry value, Avalonia.Data.BindingPriority priority) Linha 170	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.ValueStore.ReevaluateEffectiveValue(Avalonia.AvaloniaProperty property, Avalonia.PropertyStore.EffectiveValue current, Avalonia.PropertyStore.IValueEntry changedValueEntry, bool ignoreLocalValue) Linha 913	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.ValueStore.Avalonia.Data.Core.IBindingExpressionSink.OnChanged(Avalonia.Data.Core.UntypedBindingExpressionBase instance, bool hasValueChanged, bool hasErrorChanged, object value, Avalonia.Data.Core.BindingError error) Linha 741	C#
 	Avalonia.Base.dll!Avalonia.Data.Core.UntypedBindingExpressionBase.PublishValue(object value, Avalonia.Data.Core.BindingError error) Linha 340	C#
 	Avalonia.Base.dll!Avalonia.Data.TemplateBinding.PublishValue() Linha 175	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.EffectiveValue<bool>.NotifyValueChanged(Avalonia.PropertyStore.ValueStore owner, Avalonia.StyledProperty<bool> property, bool oldValue) Linha 382	C#
 	Avalonia.Base.dll!Avalonia.StyledProperty<bool>.RouteSetCurrentValue(Avalonia.AvaloniaObject target, object value) Linha 188	C#
 	Avalonia.Base.dll!Avalonia.Data.TemplateBinding.WriteValueToSource(object value) Linha 85	C#
 	Avalonia.Base.dll!Avalonia.Data.TemplateBinding.OnTargetPropertyChanged(object sender, Avalonia.AvaloniaPropertyChangedEventArgs e) Linha 220	C#
 	Avalonia.Base.dll!Avalonia.PropertyStore.EffectiveValue<bool>.NotifyValueChanged(Avalonia.PropertyStore.ValueStore owner, Avalonia.StyledProperty<bool> property, bool oldValue) Linha 382	C#
 	
...

To Reproduce

Expected behavior

No response

Avalonia version

11.3.11

OS

Windows

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bughelp-wantedA contribution from the community would be most welcome.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions