Skip to content

A combination of Cast and Slice leads to AccessViolationException #674

Description

@mahalex

Describe the bug

The following code throws System.AccessViolationException:

            int height = 720;
            int width = 1280;
            byte[] storage = new byte[width * height * sizeof(int)];
            Memory2D<int> data = storage
                .AsMemory()
                .Cast<byte, int>()
                .AsMemory2D(height: height, width: width);
            Memory2D<int> slice = data.Slice(
                row: height / 2,
                column: 0,
                height: height / 2,
                width: width);
            int total = 0;
            foreach (int v in slice.Span)
            {
                total += v;
            }

Regression

No response

Steps to reproduce

Create a project targeting net7.0, paste the above code into the `Main` method, run it.

Expected behavior

The code is supposed to calculate a sum of all values in the slice (in this case, 0).

Screenshots

image

IDE and version

VS 2022

IDE version

17.4.4

Nuget packages

  • CommunityToolkit.Common
  • CommunityToolkit.Diagnostics
  • CommunityToolkit.HighPerformance
  • CommunityToolkit.Mvvm (aka MVVM Toolkit)

Nuget package version(s)

8.2.0

Additional context

The problem disappears when there's no Cast() (so, we are summing over a Span of bytes). It also disappears when there's no Slice() (so, we are summing over data instead of slice).

Help us help you

No, just wanted to report this

Activity

  1. added
    bug 🐛An unexpected issue that highlights incorrect behavior
    on Apr 27, 2023
  2. self-assigned this
    on Apr 27, 2023
  3. Sergio0694 commented on Apr 27, 2023

    @Sergio0694
    Member

    Good catch!! Thank you 😄

  4. ChristophLindemann commented on Apr 28, 2023

    @ChristophLindemann

    @Sergio0694 when will this be released?

  5. moved this to ✅ Done in 8.2.1on May 7, 2023
  6. ChristophLindemann commented on May 10, 2023

    @ChristophLindemann

    @Sergio0694 do you have some ETA of when this will be released? I can see you added it to 8.2.1, but I could not find a planned/estimated release date for that?

    It's just so I can decide if I should implement a workaround for this, or if I can wait for 8.2.1.

  7. Sergio0694 commented on May 10, 2023

    @Sergio0694
    Member

    I don't have an exact ETA just yet, but tentatively I'd say probably around the first half of June or so?
    Can you use a nightly package from main in the meantime? The feed is this one:
    https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-MainLatest/nuget/v3/index.json

  8. ChristophLindemann commented on May 10, 2023

    @ChristophLindemann

    I guess, I could use one of the nightly builds for now.

    I will use 8.2.1-build.2

    Thanks

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

Metadata

Metadata

Assignees

Labels

Good first issue 💯Issues identified as good for first-time contributorsbug 🐛An unexpected issue that highlights incorrect behaviorhigh-performance 🚂Issues/PRs for the HighPerformance package

Type

No type

Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions