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

Open
nilaoda opened this issue Sep 14, 2024 · 1 comment
Open

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

nilaoda opened this issue Sep 14, 2024 · 1 comment

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.

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

No branches or pull requests

3 participants