Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tooltip Causes App Crash on macOS in Avalonia 11.2.0-beta1 #17018

Closed
nilaoda opened this issue Sep 14, 2024 · 3 comments · Fixed by #17218
Closed

Tooltip Causes App Crash on macOS in Avalonia 11.2.0-beta1 #17018

nilaoda opened this issue Sep 14, 2024 · 3 comments · Fixed by #17218

Comments

@nilaoda
Copy link

nilaoda commented Sep 14, 2024

Describe the bug

image

To Reproduce

  1. Create a simple Avalonia application.
  2. Add a Tooltip to any control, such as a Button.
  3. Run the app on macOS.
  4. Hover over the control to trigger the Tooltip.
<ItemGroup>
    <PackageReference Include="Avalonia" Version="11.2.0-beta1"/>
    <PackageReference Include="Avalonia.Desktop" Version="11.2.0-beta1"/>
    <PackageReference Include="Avalonia.Fonts.Inter" Version="11.2.0-beta1"/>
    <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
    <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.2.0-beta1"/>
    <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1"/>
</ItemGroup>
<StackPanel Spacing="10">
    <Button ToolTip.Tip="Here is tooltip!">
        <TextBlock  Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Button>
    <Button ToolTip.Tip="Here is tooltip 2!">
        <TextBlock  Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Button>
</StackPanel>

Expected behavior

Tooltip shown.

Avalonia version

11.2.0-beta1

OS

macOS

Additional context

When first run app, the console saied Error compiling MSL shader:

/Users/me/code/CSharp/AvaloniaApplication1/AvaloniaApplication1/bin/Debug/net8.0/AvaloniaApplication1
Error compiling MSL shader: #include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Inputs {
    float2 inPosition  [[attribute(0)]];
    float inCoverage  [[attribute(1)]];
};
struct Outputs {
    float4 sk_Position [[position]];
    float4 vcolor_Stage0  [[user(locn0)]];
    float sk_PointSize [[point_size]];
};
struct uniformBuffer {
    float4 sk_RTAdjust;
    float4 uColor_Stage0;
};
struct Globals {
    constant uniformBuffer* _anonInterface0;
};


vertex Outputs vertexMain(Inputs _in [[stage_in]], constant uniformBuffer& _anonInterface0 [[buffer(0)]], uint sk_VertexID [[vertex_id]], uint sk_InstanceID [[instance_id]]) {
    Globals globalStruct{&_anonInterface0};
    thread Globals* _globals = &globalStruct;
    (void)_globals;
    Outputs _outputStruct;
    thread Outputs* _out = &_outputStruct;
    float4 color = _globals->_anonInterface0->uColor_Stage0;
    color = color * _in.inCoverage;
    _out->vcolor_Stage0 = color;
    float2 _tmp_0_inPosition = _in.inPosition;
    _out->sk_Position = float4(_tmp_0_inPosition.x, _tmp_0_inPosition.y, 0.0, 1.0);
    _out->sk_Position = float4(_out->sk_Position.xy * _globals->_anonInterface0->sk_RTAdjust.xz + _out->sk_Position.ww * _globals->_anonInterface0->sk_RTAdjust.yw, 0.0, _out->sk_Position.w);
    _out->sk_Position.y = -_out->sk_Position.y;
    return *_out;
}

Error Domain=org.skia.ganesh Code=1 "Compilation took longer than 300 ms" UserInfo={NSLocalizedDescription=Compilation took longer than 300 ms}
Error compiling MSL shader: #include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Inputs {
    float4 vcolor_Stage0  [[user(locn0)]];
};
struct Outputs {
    float4 sk_FragColor [[color(0)]];
};
struct uniformBuffer {
    float4 sk_RTAdjust;
    float4 uColor_Stage0;
};
struct Globals {
    constant uniformBuffer* _anonInterface0;
};
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant uniformBuffer& _anonInterface0 [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
    Globals globalStruct{&_anonInterface0};
    thread Globals* _globals = &globalStruct;
    (void)_globals;
    Outputs _outputStruct;
    thread Outputs* _out = &_outputStruct;
    float4 outputColor_Stage0;
    {
        outputColor_Stage0 = _in.vcolor_Stage0;
    }
    {
        _out->sk_FragColor = outputColor_Stage0;
    }
    return *_out;
}

Error Domain=org.skia.ganesh Code=1 "Compilation took longer than 300 ms" UserInfo={NSLocalizedDescription=Compilation took longer than 300 ms}
Error compiling MSL shader: #include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Inputs {
    float2 position  [[attribute(0)]];
    float2 localCoord  [[attribute(1)]];
};
struct Outputs {
    float4 sk_Position [[position]];
    float2 vTransformedCoords_0_Stage0  [[user(locn0)]];
    float2 vTransformedCoords_1_Stage0  [[user(locn1)]];
    float sk_PointSize [[point_size]];
};
struct uniformBuffer {
    float4 sk_RTAdjust;
    float4 uleftBorderColor_Stage1_c0_c0;
    float4 urightBorderColor_Stage1_c0_c0;
    float3x3 umatrix_Stage1_c0_c0_c0;
    float4 uscale01_Stage1_c0_c0_c1;
    float4 ubias01_Stage1_c0_c0_c1;
    float4 uscale23_Stage1_c0_c0_c1;
    float4 ubias23_Stage1_c0_c0_c1;
    float uthreshold_Stage1_c0_c0_c1;
    char pad0[12];
    float3x3 umatrix_Stage2_c1;
};
struct Globals {
    constant uniformBuffer* _anonInterface0;
};



vertex Outputs vertexMain(Inputs _in [[stage_in]], constant uniformBuffer& _anonInterface0 [[buffer(0)]], uint sk_VertexID [[vertex_id]], uint sk_InstanceID [[instance_id]]) {
    Globals globalStruct{&_anonInterface0};
    thread Globals* _globals = &globalStruct;
    (void)_globals;
    Outputs _outputStruct;
    thread Outputs* _out = &_outputStruct;
    _out->sk_Position = float4(_in.position.x, _in.position.y, 0.0, 1.0);
    {
        _out->vTransformedCoords_0_Stage0 = (_globals->_anonInterface0->umatrix_Stage1_c0_c0_c0 * float3(_in.localCoord, 1.0)).xy;
    }
    {
        _out->vTransformedCoords_1_Stage0 = (_globals->_anonInterface0->umatrix_Stage2_c1 * float3(_in.localCoord, 1.0)).xy;
    }
    _out->sk_Position = float4(_out->sk_Position.xy * _globals->_anonInterface0->sk_RTAdjust.xz + _out->sk_Position.ww * _globals->_anonInterface0->sk_RTAdjust.yw, 0.0, _out->sk_Position.w);
    _out->sk_Position.y = -_out->sk_Position.y;
    return *_out;
}

Error Domain=org.skia.ganesh Code=1 "Compilation took longer than 300 ms" UserInfo={NSLocalizedDescription=Compilation took longer than 300 ms}
Error compiling MSL shader: #include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Inputs {
    float2 vTransformedCoords_0_Stage0  [[user(locn0)]];
    float2 vTransformedCoords_1_Stage0  [[user(locn1)]];
};
struct Outputs {
    float4 sk_FragColor [[color(0)]];
};
struct uniformBuffer {
    float4 sk_RTAdjust;
    float4 uleftBorderColor_Stage1_c0_c0;
    float4 urightBorderColor_Stage1_c0_c0;
    float3x3 umatrix_Stage1_c0_c0_c0;
    float4 uscale01_Stage1_c0_c0_c1;
    float4 ubias01_Stage1_c0_c0_c1;
    float4 uscale23_Stage1_c0_c0_c1;
    float4 ubias23_Stage1_c0_c0_c1;
    float uthreshold_Stage1_c0_c0_c1;
    char pad0[12];
    float3x3 umatrix_Stage2_c1;
};
struct Globals {
    constant uniformBuffer* _anonInterface0;
    texture2d<float> uTextureSampler_0_Stage2;
    sampler uTextureSampler_0_Stage2Smplr;
};


fragment Outputs fragmentMain(Inputs _in [[stage_in]], texture2d<float> uTextureSampler_0_Stage2[[texture(0)]], sampler uTextureSampler_0_Stage2Smplr[[sampler(0)]], constant uniformBuffer& _anonInterface0 [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
    Globals globalStruct{&_anonInterface0, uTextureSampler_0_Stage2, uTextureSampler_0_Stage2Smplr};
    thread Globals* _globals = &globalStruct;
    (void)_globals;
    Outputs _outputStruct;
    thread Outputs* _out = &_outputStruct;
    float4 output_Stage1;
    float4 _16_OverrideInputFragmentProcessor_Stage1_c0;
    {
        float4 _22_ClampedGradientEffect_Stage1_c0_c0;
        {
            float4 _24_3_MatrixEffect_Stage1_c0_c0_c0;
            {
                float4 _25_5_0_LinearGradientLayout_Stage1_c0_c0_c0_c0;
                {
                    float _26_7_2_t = _in.vTransformedCoords_0_Stage0.x + 9.9999997473787516e-06;
                    _25_5_0_LinearGradientLayout_Stage1_c0_c0_c0_c0 = float4(_26_7_2_t, 1.0, 0.0, 0.0);
                }

                _24_3_MatrixEffect_Stage1_c0_c0_c0 = _25_5_0_LinearGradientLayout_Stage1_c0_c0_c0_c0;

            }

            float4 _27_t = _24_3_MatrixEffect_Stage1_c0_c0_c0;

            float4 _28_outColor;
            if (_27_t.x < 0.0) {
                _28_outColor = _globals->_anonInterface0->uleftBorderColor_Stage1_c0_c0;
            } else if (_27_t.x > 1.0) {
                _28_outColor = _globals->_anonInterface0->urightBorderColor_Stage1_c0_c0;
            } else {
                float4 _29_8_DualIntervalGradientColorizer_Stage1_c0_c0_c1;
                float2 _30_9_coords = float2(_27_t.x, 0.0);
                {
                    float _31_11_t = _30_9_coords.x;
                    float4 _32_12_scale;
                    float4 _33_13_bias;
                    if (_31_11_t < _globals->_anonInterface0->uthreshold_Stage1_c0_c0_c1) {
                        _32_12_scale = _globals->_anonInterface0->uscale01_Stage1_c0_c0_c1;
                        _33_13_bias = _globals->_anonInterface0->ubias01_Stage1_c0_c0_c1;
                    } else {
                        _32_12_scale = _globals->_anonInterface0->uscale23_Stage1_c0_c0_c1;
                        _33_13_bias = _globals->_anonInterface0->ubias23_Stage1_c0_c0_c1;
                    }
                    _29_8_DualIntervalGradientColorizer_Stage1_c0_c0_c1 = _31_11_t * _32_12_scale + _33_13_bias;
                }

                _28_outColor = _29_8_DualIntervalGradientColorizer_Stage1_c0_c0_c1;

            }
            {
                _28_outColor.xyz = _28_outColor.xyz * _28_outColor.w;
            }
            _22_ClampedGradientEffect_Stage1_c0_c0 = _28_outColor;
        }
        _16_OverrideInputFragmentProcessor_Stage1_c0 = _22_ClampedGradientEffect_Stage1_c0_c0;

    }

    output_Stage1 = _16_OverrideInputFragmentProcessor_Stage1_c0;

    float4 output_Stage2;
    float4 _18_MatrixEffect_Stage2_c1;
    {
        float4 _20_14_TextureEffect_Stage2_c1_c0;
        {
            _20_14_TextureEffect_Stage2_c1_c0 = _globals->uTextureSampler_0_Stage2.sample(_globals->uTextureSampler_0_Stage2Smplr, _in.vTransformedCoords_1_Stage0).xxxx;
        }

        _18_MatrixEffect_Stage2_c1 = _20_14_TextureEffect_Stage2_c1_c0;

    }

    output_Stage2 = _18_MatrixEffect_Stage2_c1;

    {
        _out->sk_FragColor = output_Stage1 * output_Stage2;
    }
    return *_out;
}

Error Domain=org.skia.ganesh Code=1 "Compilation took longer than 300 ms" UserInfo={NSLocalizedDescription=Compilation took longer than 300 ms}
Error compiling MSL shader: #include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
struct Inputs {
    float2 position  [[attribute(0)]];
    float2 localCoord  [[attribute(1)]];
};
struct Outputs {
    float4 sk_Position [[position]];
    float2 vTransformedCoords_0_Stage0  [[user(locn0)]];
    float2 vTransformedCoords_1_Stage0  [[user(locn1)]];
    float sk_PointSize [[point_size]];
};
struct uniformBuffer {
    float4 sk_RTAdjust;
    float4 uleftBorderColor_Stage1_c0_c0;
    float4 urightBorderColor_Stage1_c0_c0;
    float3x3 umatrix_Stage1_c0_c0_c0;
    float4 uscale01_Stage1_c0_c0_c1;
    float4 ubias01_Stage1_c0_c0_c1;
    float4 uscale23_Stage1_c0_c0_c1;
    float4 ubias23_Stage1_c0_c0_c1;
    float uthreshold_Stage1_c0_c0_c1;
    char pad0[12];
    float3x3 umatrix_Stage2_c1;
};
struct Globals {
    constant uniformBuffer* _anonInterface0;
};



vertex Outputs vertexMain(Inputs _in [[stage_in]], constant uniformBuffer& _anonInterface0 [[buffer(0)]], uint sk_VertexID [[vertex_id]], uint sk_InstanceID [[instance_id]]) {
    Globals globalStruct{&_anonInterface0};
    thread Globals* _globals = &globalStruct;
    (void)_globals;
    Outputs _outputStruct;
    thread Outputs* _out = &_outputStruct;
    _out->sk_Position = float4(_in.position.x, _in.position.y, 0.0, 1.0);
    {
        _out->vTransformedCoords_0_Stage0 = (_globals->_anonInterface0->umatrix_Stage1_c0_c0_c0 * float3(_in.localCoord, 1.0)).xy;
    }
    {
        _out->vTransformedCoords_1_Stage0 = (_globals->_anonInterface0->umatrix_Stage2_c1 * float3(_in.localCoord, 1.0)).xy;
    }
    _out->sk_Position = float4(_out->sk_Position.xy * _globals->_anonInterface0->sk_RTAdjust.xz + _out->sk_Position.ww * _globals->_anonInterface0->sk_RTAdjust.yw, 0.0, _out->sk_Position.w);
    _out->sk_Position.y = -_out->sk_Position.y;
    return *_out;
}

Error Domain=org.skia.ganesh Code=1 "Compilation took longer than 300 ms" UserInfo={NSLocalizedDescription=Compilation took longer than 300 ms}
Error creating pipeline: Pipeline creation took longer than 300 ms

Process finished with exit code 139.
@ahopper
Copy link
Contributor

ahopper commented Sep 18, 2024

saw crashes on tooltips repeatedly testing with master on mac over the last couple of days, It occasionally worked. No console output in my case.

@grokys
Copy link
Member

grokys commented Oct 8, 2024

@nilaoda @ahopper the version of macOS isn't specified here but I've only been able to reproduce on macOS 12. Could you check #17218 to see if this fixes it?

EDIT: Actually I see from the screenshot this you're running macOS 12 too, so looks to be the same issue.

@nilaoda
Copy link
Author

nilaoda commented Oct 12, 2024

@grokys Everything is working fine now, thank you so much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants