-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Assert failure: !CREATE_CHECK_STRING(pMT && pMT->Validate()) #90602
Labels
arch-arm32
area-CodeGen-coreclr
CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
JitStress
CLR JIT issues involving JIT internal stress modes
os-linux
Linux OS (any supported distro)
Milestone
Comments
BruceForstall
added
arch-arm32
os-linux
Linux OS (any supported distro)
JitStress
CLR JIT issues involving JIT internal stress modes
area-CodeGen-coreclr
CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
labels
Aug 15, 2023
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue Detailsnet8.0-linux-Release-arm-CoreCLR_checked-jitstress2_jitstressregs0x10
|
@jakobbotsch, could you please take a look? |
jakobbotsch
added a commit
to jakobbotsch/runtime
that referenced
this issue
Aug 16, 2023
Physical promotion was working under the assumption that reinterpreting GC pointers is undefined behavior, and would happily promote GC pointers as integers if it saw such accesses. However, physical promotion is function wide while the UB accesses can be happening in a restricted (dynamically unreachable) scope. This exact situation happens in MemoryExtensions.Contains. The issue was uncovered under jit stress where we did not fold away the guard early enough, meaning that promotion then saw a `TYP_LONG` access of a `struct { object, int }` and proceeded to promote it as such. Fix dotnet#90602
ghost
added
in-pr
There is an active PR which will close this issue when it is merged
and removed
in-pr
There is an active PR which will close this issue when it is merged
labels
Aug 16, 2023
jakobbotsch
added a commit
that referenced
this issue
Aug 17, 2023
Physical promotion was working under the assumption that reinterpreting GC pointers is undefined behavior, and would happily promote GC pointers as integers if it saw such accesses. However, physical promotion is function wide while the UB accesses can be happening in a restricted (dynamically unreachable) scope. This exact situation happens in MemoryExtensions.Contains. The issue was uncovered under jit stress where we did not fold away the guard early enough, meaning that promotion then saw a `TYP_LONG` access of a `struct { object, int }` and proceeded to promote it as such. Fix #90602
ghost
removed
the
in-pr
There is an active PR which will close this issue when it is merged
label
Aug 17, 2023
github-actions bot
pushed a commit
that referenced
this issue
Aug 17, 2023
Physical promotion was working under the assumption that reinterpreting GC pointers is undefined behavior, and would happily promote GC pointers as integers if it saw such accesses. However, physical promotion is function wide while the UB accesses can be happening in a restricted (dynamically unreachable) scope. This exact situation happens in MemoryExtensions.Contains. The issue was uncovered under jit stress where we did not fold away the guard early enough, meaning that promotion then saw a `TYP_LONG` access of a `struct { object, int }` and proceeded to promote it as such. Fix #90602
carlossanlop
pushed a commit
that referenced
this issue
Aug 17, 2023
#90739) * JIT: Disallow mismatched GC-ness for physical promotions Physical promotion was working under the assumption that reinterpreting GC pointers is undefined behavior, and would happily promote GC pointers as integers if it saw such accesses. However, physical promotion is function wide while the UB accesses can be happening in a restricted (dynamically unreachable) scope. This exact situation happens in MemoryExtensions.Contains. The issue was uncovered under jit stress where we did not fold away the guard early enough, meaning that promotion then saw a `TYP_LONG` access of a `struct { object, int }` and proceeded to promote it as such. Fix #90602 * Address feedback --------- Co-authored-by: Jakob Botsch Nielsen <[email protected]>
ghost
locked as resolved and limited conversation to collaborators
Sep 16, 2023
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
arch-arm32
area-CodeGen-coreclr
CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
JitStress
CLR JIT issues involving JIT internal stress modes
os-linux
Linux OS (any supported distro)
net8.0-linux-Release-arm-CoreCLR_checked-jitstress2_jitstressregs0x10
System.Memory.Tests
https://dev.azure.com/dnceng-public/public/_build/results?buildId=374065&view=ms.vss-test-web.build-test-results-tab&runId=7949792&paneView=debug
The text was updated successfully, but these errors were encountered: