question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Image crashes with pictures from bytearray which is created with DrawingView or isn't refreshed with byte[0] - Only on Android

See original GitHub issue

Only on Android.

It seems that the Image control takes the picture and resolves the dimensions in a way that isn’t right. A very small picture ends in a big dimension and increases the memory up to millions of bytes and so the app is crashing.

XXML:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp2.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Image
                SemanticProperties.Description="Cute dot net bot waving hi to you!"
                HeightRequest="200"
                HorizontalOptions="Center"
                x:Name="imageContent"
                />

            <Label
                Text="Hello, World!"
                SemanticProperties.HeadingLevel="Level1"
                FontSize="32"
                HorizontalOptions="Center" />

            <Label
                Text="Welcome to .NET Multi-platform App UI"
                SemanticProperties.HeadingLevel="Level2"
                SemanticProperties.Description="Welcome to dot net Multi platform App U I"
                FontSize="18"
                HorizontalOptions="Center" />

            <Button
                x:Name="CounterBtn"
                Text="Click me"
                SemanticProperties.Hint="Counts the number of times you click"
                Clicked="OnCounterClicked"
                HorizontalOptions="Center" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

Code Behind:

public partial class MainPage : ContentPage
{
	int count = 0;

    string byte64Image = "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAJSACIDASIAAhEBAxEB/8QAHQABAQEAAwADAQAAAAAAAAAAAAoLBwgJBAUGAv/EADgQAAAFAwIDBQYGAQUBAAAAAAABAgMEBQYHCAkKEhMRFDl4uElKWYjI8BUWISIjJDEXJTM0Qhj/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A74bju+Jql0h722mPSQinVqzNItQztjLH2SqlLgY0l0jL1rZdsDBqplWpFYrWNapetsM4aunJtQrVZaod4wZdyrinSXKhToL0dMGwgQOcbnhx2BbugjUDQmChpjX7nmyLqqTDLMeW5X7ktXDFUslaZ0VhmUpcWlYsuXpnLlSHWlIQcI2G23EHcxhfJdHzTh3E+YredYeoGWcaWJkuhvRXUvxXaPfdrUq6aY7GfSpaXmHIVVYWy6lSkuNmlZKMlEZhyWAAAAAAI5eNep8ZzbY02VVbLapkPXFZ9PYkGX8rUap4F1AyZbKFf5JuQ7SYTjpf+lRmj/8AJCiza1Mj2yNucyU4sj0I6RDJbqzW6sj0/Y97FOLV+5biv8rWr9VKMzP9TE+XGpwnpG1pgiUyw86mBr1xe5KW00txEaNI0/6nY5PyFoI0sMqluRIyXHOVCpElhkldR1tK/fPaWqsKrbW23C7Dnw5642g/SBCqBw5LEnulSZ0743VLhSiYWso8xg3Em/Fd5HmedPO2nmLtD0IAAAAAAEsPGF0T8V2fpE/qcn5a1QYSrfLz8vV68G+rc6fZ0nOp2fmDq8nOx2dLn6quToPd3+Hhvb867WWnP+v3f8pWBiGyf+Lpdf8AAdOuE/7H/bl9Tqd7/wCX+tz8v/UZ7P3cDcV3Ql1fZH1K1BFOZnJta+tO1ddkutx1ro6JGd7BtkqjHU9/Iy865cTdJU5E/sHHqj7Kv6rskcS8IlfMK+NrK5O5VyZXPyhqVrFjS++fif8As8239Oumrr0OL+JNNf06f3tHQ7h1KZ/Mrurq/wCTsCpIAAAAAAeE3ExUFFybHmvCnrdeaKPbWGa8S2GycWa7V1J4auhDSkn+hMvLo6WZDn+Wo7jrpfqgh5Z8E9XnZG3Nqctg0RyYo+te5K824k1d7W7cmC8G095DyTWaCjtotVhUY0tpUpxyWS1uElCW/cvfMxzPyntBbiFr02ZGgyafpeyPkJT0uGxOaciYjp6Mr1GChmStttuTUqfZUqnQppK61NmSmKjGSuRFaQqZvgdb7kTsXbh+MnJklcW17+07X3Ep6kH3RiRflu5Zt+oTGF9pkcmW3jimMSkGSTJqFDNJrI1cgXfAAAAAADirO2O4eXsIZkxNUWDlU/KGKsh47nRiJpRyId62jWLaksEl9xplRvMVNbZE8600fN2OOIR2qLOn4J3Iky39d2rjDsl8oTF76WWb1kU6SbrEh+s4ry3ZVBitpjuNklUiFCylXDdaWtElps3lIZW2iUtjStGYJsrxZWlbinL9wxKjPWrRbhzbr+whAiutmUKfQbfdzDWrZjx5C+6Jep0ys4wpLFMmNR3G5ctiK03Hb63VYDT7AAAAAAAZ3W6NYjOifiktt7KjzrRW1mfImIcgVSrR2kU6NCczPqzzVZl3tSnorcNcl6gUW6oVRqjjxyFyokltp9yW24pk9EUQKcZ9Qari7Oe11qxocVcuTa9RypQZPV7FQmKrjS8MS5Js6K6hznb56u5Wbp5v4lEpqlKJ7mSTaQF9YD8dj+/bXyfaNJvmzKk3V7arnf8A8NqDXZySPwypzaPM5eVSy/in0+UwfYo/1aP/AAf6F+xAAAAARzcanjKNcW3Np5yk21z1XGmrqgUI3ek4vo27kXFWTkVY+q22smScrlpWkj+Y2mHDMk9XvBR2XrGRPvxReNmMi7JWrp8ob0yq47lYVyTROi2h1UV+g5wx7Tq5MUlakcrLFm1u5zfcQsltMqW4SXSSbLgcmcOln+v6ldojTHk67pHerwfrGeKJczneESeybSNQWT0U5PPzqeT2W6/RD5JKGXi7eZLao6mHnfbwSDcF3kl+6dsfMuPpsxp+Ti3V/fLFMiJcWb8G2byxjia4oZONKTyoak3Md4PMuIcMnVddKmW1M9R+vkAAAAB0C3WcavZf2zNfuOYcNqfVLk0gag26DDeaW6h+5qdjC5axbCUobWhZOpuCn01bDiefovJbe6L5INlzv6PpriocG57frttVNPPTbho1TodQQSGXDXBq0J+BLT05DbzDnMxIcLkfZdZV28rja0GpJhApwOmSWES9xLD8uY73mRH045JoNPNxBsdCE7l+17tmNs8pOJd6k+ymHnCW4hxHQSaWVNkb+gIMyDhG59c05bwuXdP9+UusU2u5G0m3tbyKfOgyqVKg3DRrgxLlmlyKnTZbqVMx3LPp9wJYccZdkG7OgrjqajSZHU03wAAAAAAAZ7lFt+FpQ40m0rcphuO2hkOmUG34CXlHMn9xvfQI1bsTqumbi2XG8gUVp9xZkRlS0KQfI271C0Ixn8b5/ZgHijtqjNlNM48W/D0YyrlkERRzcJOpm/MUXYgpLxtRFmdg/hjRKdko6fU5JZMRui87fhb9ah3JQaJcVOM1U+v0im1qCo1tOGqHVYTM6KZrYcdYWZsPoM1suuNKP9W3FoMlGH24AAAAAAgC40enzca5/wBrfUbR47jFRo5Zlp/4zHInXWJuLr1wvfVux1NmbBJcQ/dFYlQiVLSUhSJaSOP0FOOWQ7aN/wD+qe3VoPyKud+Iyrx0e6bq7U5ZlyrcrU3EFoLriHk9R0kSGKwU6PJQTrpIfacSTrhFzqmU42qxDqOhPSVksmGF/lDVm7ZCnzSZymU5Dw/kCucjRksiTFeXjNByjNtRG+1CLqNn2Jd9feGzyExkjZP0LVVEtcmTb1l5Ax7PbeeadkQn8dZlyLZkWI8TRETKPwmi06TAZWROppcmCpw1KXzqD3KAAAAAAEsnGE2yVe2fZlVM19tlancI3MnkilISZy4t72b2OO9pdxRy3aZlKIlGtwm4XZ2TDMv2vCQXK1XdmDFVLbTHJdmZoz7bT5syUvuKdlX3IvAlS2kkRwpHQutlKYyzUpcVMaYR8ktCU8hcVXbqK3seasakpxlB2hc2nC4m0uxyeW6uTqSxVaRtx3DUk4jxIuhbqpCSWao7T8XlIpJrT1I4MOvrrO1Bk6nKjqZK09b2XKA24qQb5S0ScQ6fbpOQho2myhpSu5VxTjpW+SlxlS+qRyjYZCtsAAAAAAeKXEXW8Vz7Kmvymmyy/wB2xda1w8j7LL6EnaOWce3WTyUPrbQl6OdF68d5KjejyG2pEZDshpptfizwSNxuStEWsC0TN7o0PVTTbjQlUl1UcnLpxJZlMdNqIbZMsPGmzmSfkturdlITHaebbRDYU7QJvgQW6htD7izDkaHKS3pQyzOJqc2pxhDlMt6RUmpKEpIzKZDdiImU5w/2tVBiM6oySgzKYbgcZleXjzccgSJLirXjXppjmUeIbxqaYr06h5wZuSSiPzmTTkqn0+1WnHibSchMNps1rKMlLYXkAAAAAADze3iqEu4tp/cjgIkpinH0Rama6bqmjdJSLXxDdlyuRiSS2zJUxFJVEQ7zGTK30vKQ4TZtqlI4GyuNSLR3KbbJhxL9JuTShXHJJqSbTrVwUzUPAZYQgv3pcjrtl9x1Sv2qTKZJH6oWK2d2LwstyzyAayPTrkYSBcDH7UX5Jvq4AX+AAAAAADpnuN2g9kHb014WFGdWxIvfRnqhtBh5ppb7jL1y4QvijNOtstocW8ttc1K0NIQtbiiJCUKMyI4yOC5ccxhqO3U8ASSORMgMYScdnOtKZfNzD9951suQSmnHWXWTlu3yl51pUJakLYSlbsVSSak3y3VblNvG2LjtGsoU5R7poNYtyrNoTHWtym1ynyKZOQlEtiVFWpcWU6lKZMaRHUZkTzDzZqbVAxw/iVYc4mXd5wk23+H2/VP/ALVYocFZtOOutWrrHsKq2Y6Z0lCKUzz2XVqpJcaVFhpjqeTFbTAkJXTng0BQAAAAAAGepicpGnTjWclUu46v+XqBkit5Zrk2pSVR2KRUqBkfRDUMx05qTOlw4CO5s1+PAiLdgoccbuGklS3Zs7pTpL+hWM0via7unaNN+zFGp1mnTJUe6dKllXnGXTIy2nZUx6mZpwPNi97al0RMqoQotEgSpaDq3eI9MmU5LqlR3IsRQaWgD4sGdDqcKHUqfJZmQKhFjzoMyO4l2PKhy2kPxpLDqTNLjL7LiHWnEmaVoWlRGZGQAPlAAAAzseOGx01TM17feWiWk3r2xbnnHTjZOuGtLWLrsxzcrK1Mn/E2la8vvpS6guo8ba0O/tYZGicIA+Oc9l187P0jgLQ9v7IMrLWg3RLlWbGTDmZM0jabsgy4iSSlMWVeeG7MuORGSSDNBJYdqS2iJBmkiSRJMy7DAcc7TvhZbafkA0b+nXHIAO/4AAAIA+Oc9l187P0ji/wQB8c57Lr52fpHAV+7TvhZbafkA0b+nXHIBtO+Fltp+QDRv6dccgA7/gAAAgD45z2XXzs/SOL/AAQB8c57Lr52fpHAV+7TvhZbafkA0b+nXHIBtO+Fltp+QDRv6dccgA7/AIAAAIA+Oc9l187P0ji/wQB8c57Lr52fpHAV+7TvhZbafkA0b+nXHIBtO+Fltp+QDRv6dccgA7/gAAAgD45z2XXzs/SOL/BAHxznsuvnZ+kcBX7tO+Fltp+QDRv6dccgG074WW2n5ANG/p1xyADv+AAACAPjnPZdfOz9I4v8EAfHOey6+dn6RwFfu074WW2n5ANG/p1xyAbTvhZbafkA0b+nXHIAO/4AAAIA+Oc9l187P0ji/wAEAfHOey6+dn6RwFfu074WW2n5ANG/p1xyAbTvhZbafkA0b+nXHIAO/wCAAACAPjnPZdfOz9I4v8EAfHOey6+dn6RwFfu074WW2n5ANG/p1xyAbTvhZbafkA0b+nXHIAO/4AAAIA+Oc9l187P0ji/wQB8c57Lr52fpHAV+7TvhZbafkA0b+nXHIBtO+Fltp+QDRv6dccgA7/gAAAgD45z2XXzs/SOL/BAHxznsuvnZ+kcBX7tO+Fltp+QDRv6dccgG074WW2n5ANG/p1xyADv+AAACAPjnPZdfOz9I4v8ABnW8cLkaDU84bf2JG5qXKlZGKc65Gl07kjEqLByld2PrZp803EOHMWmfIw/U2EofaRGbOmqVFccddmJaC1Pad8LLbT8gGjf0645AcibfePqliXQVojxVWW3GavjPSJpsx9VWXVKW61UrMw1ZduTm3FqjQ1LcRKprqVqVEiqUojM4zBmbSQDt2AAADME41bxTcB+QDFnqK1VDT7GYJxq3im4D8gGLPUVqqAafKEIbQlttKUIQlKEIQkkoQhJElKUpSRElKSIiSkiIiIiIi7CAf0AAAAADME41bxTcB+QDFnqK1VDT7GYJxq3im4D8gGLPUVqqAafYAAAAAADME41bxTcB+QDFnqK1VDT7GYJxq3im4D8gGLPUVqqAafYAAAAAADMS4sCNJz9vcY4xNSbeuK66hZ+kDGVkHQLDRFduue63Wc55hX3dEj8XZORFh3iibL61OiqKiRzUiJ+jVTladoz38l2lQsw8bwvHWSIZXXZa4MSmJoFVcXIgMU6DtPOXjGhRmXDUiPFbud6RW+i0SWzqMmTJNPVfcUoNCAAAAAAABAH79d9/B4F/ggD9+u+/g8AL/AAAAAAAEAfv1338HgX+CAP3677+DwAv8AAAAAAAQB+/XffweBf4IA/frvv4PAC/wAAAAAABAH79d9/B4F/ggD9+u+/g8AL/AAAAAAAABAH79d9/B4F/ggD9+u+/g8AL/AAAAAAAEAfv1338HgX+CAP3677+DwAv8AAAAAAAQB+/XffweBf4IEUU2a5x07spDPawzBKpOr6jRcsI9otujk9ym4S1f7i63H6aUm7+7rdPoEp0gvuAAAAAAAccpw9iNOTl5sTi3HKczOW6VoOZbTZFslk5dpk6l4rXXfpUz81Kt0nkIeKiKqp00nUJc7tzpIyAA5GAAAf/2Q==";

    public MainPage()
	{
		InitializeComponent();
	}

    // Crashing
	private void OnCounterClicked(object sender, EventArgs e)
    {
        count++;

		if (count == 1)
		{
			CounterBtn.Text = $"Clicked {count} time";
		}
		else
            CounterBtn.Text = $"Clicked {count} times";

        SemanticScreenReader.Announce(CounterBtn.Text);

        if (count % 2 == 0)
        {
            imageContent.Source = "dotnet_bot.png";
        }
        else if(count == 9)
            imageContent.Source = ImageSource.FromStream(() => new MemoryStream(new byte[0]));
        else
        {
            byte[] image = Convert.FromBase64String(byte64Image);
            imageContent.Source = ImageSource.FromStream(() => new MemoryStream(image));
        }
    }

    // works
    //private void OnCounterClicked(object sender, EventArgs e)
    //{
    //    count++;

    //    if (count == 1)
    //    {
    //        CounterBtn.Text = $"Clicked {count} time";
    //    }
    //    else
    //        CounterBtn.Text = $"Clicked {count} times";

    //    SemanticScreenReader.Announce(CounterBtn.Text);

    //    if (count % 2 == 0)
    //    {
    //        byte[] image = Convert.FromBase64String(byte64Image);
    //        imageContent.Source = ImageSource.FromStream(() => new MemoryStream(image));

    //    }
    //    else if (count == 9)
    //        imageContent.Source = ImageSource.FromStream(() => new MemoryStream(new byte[0]));
    //    else
    //    {
    //        imageContent.Source = "dotnet_bot.png";
    //    }
    //}
}

You can paste these two snippets in a blank new maui app - so you can see the crash. If you take the code with the comment with “works” you can see that a different order will help to run the app without any crash. It seems that the Image control isn’t correct initialized inside and so the crash will follow.

From time to time the image isn’t refreshed if i write byte[0] in it and another image was present already.

Issue Analytics

  • State:open
  • Created 6 months ago
  • Comments:5 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
Zhanglirong-Winniecommented, Jun 21, 2023

Verified this issue with Visual Studio Enterprise 17.7.0 Preview 2.0. Can repro on android platform with above code. Screenshot 2023-06-21 111205

1reaction
jsuarezruizcommented, Jun 19, 2023

Cannot reproduce the crash in the main branch. Need to review with more details. Captura de pantalla 2023-06-19 a las 11 04 52

Read more comments on GitHub >

github_iconTop Results From Across the Web

Why my app crashed when upload a bytearray image?
So I want to upload the image shown in imageView to Firebase Storage, but Firebase Storage only accepts bytearray and uri files when...
Read more >
ByteBuffer
Byte buffers can be created either by allocation , which allocates space for the buffer's content, or by wrapping an existing byte array...
Read more >
Crashes on open - Android
Sketchbook is crashing when I open it If Sketchbook on your Android device crashes as soon as you open it, there are a...
Read more >
Avoiding Out of Memory Crashes on Mobile
When it is first created, it will start by preallocating memory for a small byte array where it will store all the downloaded...
Read more >
byte[] image data in onPreviewFrame is currently useless ...
I was trying to acquire camera preview images through onPreviewFrame(byte[] data, Camera c) and, within this callback function,
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found