-
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
[mono] Disable gsharing when Unsafe.ReadUnaligned/WriteUnaligned () i… #89417
Conversation
/azp run runtime-wasm |
Azure Pipelines successfully started running 1 pipeline(s). |
…s used with generic structures. Fixes dotnet#89398. For a method like ``` static void Write<T>(ref byte b, T value) => Unsafe.WriteUnaligned<T>(ref b, value); ``` And an instance ```Write<GStruct<string>>```, generic sharing will create a ```Write<T_INST>``` instance where T_INST is constrained to GStruct<T_REF>. The JIT currently calls ```mini_get_underlying_type ()``` in many places which transform T_INST into GStruct<T_REF>. This causes problems at runtime in the generic sharing code, which expects to find T_INST. I.e. ```inflate_info ()``` can inflate ```T_INST``` to ```GStruct<string>```, but it can't inflate ```GStruct<T_REF>``` to ```GStruct<string>```. As a workaround, disable gsharing in (some) of these cases.
/azp run runtime-wasm |
No commit pushedDate could be found for PR 89417 in repo dotnet/runtime |
/azp run runtime-wasm |
No commit pushedDate could be found for PR 89417 in repo dotnet/runtime |
/azp run runtime-wasm |
No commit pushedDate could be found for PR 89417 in repo dotnet/runtime |
/azp run runtime-wasm |
1 similar comment
/azp run runtime-wasm |
No commit pushedDate could be found for PR 89417 in repo dotnet/runtime |
1 similar comment
No commit pushedDate could be found for PR 89417 in repo dotnet/runtime |
Should this be in method-to-ir? this |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@vargaz can you make a GH Issue about the general problem. If we get this kind of crash in other situations, it would be good to have something that explains what is happening.
…s used with generic structures.
Fixes #89398.
For a method like
And an instance
Write<GStruct<string>>
, generic sharing will create aWrite<T_INST>
instance where T_INST is constrained to GStruct<T_REF>. The JIT currently callsmini_get_underlying_type ()
in many places which transform T_INST into GStruct<T_REF>.This causes problems at runtime in the generic sharing code, which expects to find T_INST.
I.e.
inflate_info ()
can inflateT_INST
toGStruct<string>
, but it can't inflateGStruct<T_REF>
toGStruct<string>
.As a workaround, disable gsharing in (some) of these cases.