Search Issue Tracker
Fixed
Fixed in 2021.3.18f1, 2022.2.5f1, 2023.1.0a26
Votes
0
Found in
2022.2.0b14
2023.1.0a18
Issue ID
UUM-19622
Regression
Yes
Marshal.OffsetOf returns invalid value in IL2CPP for misaligned fields on macOS
Marshal.OffsetOf returns invalid value in IL2CPP for misaligned fields on macOS, .NET 7.0/ Unity Mono return correct value.
On 2022.2.0b14 on macOS (Arm) it prints:
"foo 1" under Mono (Editor and Standalone), and .NET 7.0
"foo 0" under IL2CPP
This was working previously at least in 2020.3, likely also in 2021.x
Reprocase is as following:
{code:c#}
[StructLayout(LayoutKind.Explicit, Size = 3)]
struct Repro
{
[FieldOffset(1)]
public ushort foo;
}
public void ReproCase()
{
foreach (var field in typeof(Repro).GetFields())
{
var offset = (uint) Marshal.OffsetOf(field.DeclaringType, field.Name).ToInt32();
Debug.LogWarning($"{field.Name} {offset}");
}
} {code}
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Unity freezes when opening a project
- [Silicon] Artifacts appear in the Game view when resizing the window/entering the Play Mode in a specific project
- Marker in the animation’s preview window doesn’t stop when reaching the end of the timeline and jumps to the start of the animation when moving it with the cursor
- Animation Event marker is not placed on the current time of the timeline when using the “Add Event” button
- Editor crashes on vector_map<ConstantString,AssetBundle when using the LoadAssetAsync function
Resolution Note (fix version 2023.1.0a26):
Fixed Marshal.OffsetOf returning invalid values in IL2CPP for misaligned fields on macOS.