Repository navigation
Test failure JIT/Directed/nullabletypes/Desktop/boxunboxvaluetype_ro/boxunboxvaluetype_ro.sh #77661
Copy link
Copy link
Closed
Labels
GCStressJitStressCLR JIT issues involving JIT internal stress modesCLR JIT issues involving JIT internal stress modesarch-arm64area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIblocking-clean-ci-optionalBlocking optional rolling runsBlocking optional rolling runsos-macosmacOS aka OSXmacOS aka OSXos-windows
Milestone
Description
Run: runtime-coreclr gcstress-extra 20221029.1
Failed test:
coreclr OSX arm64 Checked gcstress0xc_jitstress2 @ OSX.1200.ARM64.Open
- JIT/Directed/nullabletypes/Desktop/boxunboxvaluetype_ro/boxunboxvaluetype_ro.sh
coreclr windows arm64 Checked gcstress0xc_jitstress2 @ Windows.10.Arm64v8.Open
- JIT\\Directed\\nullabletypes\\Desktop\\boxunboxvaluetype_ro\\boxunboxvaluetype_ro.cmd
- JIT\\Directed\\nullabletypes\\Desktop\\boxunboxvaluetype_do\\boxunboxvaluetype_do.cmd
coreclr windows arm64 Checked gcstress0xc_zapdisable_jitstress2 @ Windows.10.Arm64v8.Open
- JIT\\Directed\\nullabletypes\\Desktop\\boxunboxvaluetype_ro\\boxunboxvaluetype_ro.cmd
Error message:
Return code: 1
Raw output file: /tmp/helix/working/A66408B2/w/B88D09D2/uploads/Reports/JIT.Directed/nullabletypes/Desktop/boxunboxvaluetype_ro/boxunboxvaluetype_ro.output.txt
Raw output:
BEGIN EXECUTION
/tmp/helix/working/A66408B2/p/corerun -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false boxunboxvaluetype_ro.dll ''
--- char? s = Helper.Create(default(char)) ---
--- char? s = null ---
--- char u = Helper.Create(default(char)) ---
--- bool? s = Helper.Create(default(bool)) ---
--- bool? s = null ---
--- bool u = Helper.Create(default(bool)) ---
--- byte? s = Helper.Create(default(byte)) ---
--- byte? s = null ---
--- byte u = Helper.Create(default(byte)) ---
--- sbyte? s = Helper.Create(default(sbyte)) ---
--- sbyte? s = null ---
--- sbyte u = Helper.Create(default(sbyte)) ---
--- short? s = Helper.Create(default(short)) ---
--- short? s = null ---
--- short u = Helper.Create(default(short)) ---
--- ushort? s = Helper.Create(default(ushort)) ---
--- ushort? s = null ---
--- ushort u = Helper.Create(default(ushort)) ---
--- int? s = Helper.Create(default(int)) ---
--- int? s = null ---
--- int u = Helper.Create(default(int)) ---
--- uint? s = Helper.Create(default(uint)) ---
--- uint? s = null ---
--- uint u = Helper.Create(default(uint)) ---
--- long? s = Helper.Create(default(long)) ---
--- long? s = null ---
--- long u = Helper.Create(default(long)) ---
--- ulong? s = Helper.Create(default(ulong)) ---
--- ulong? s = null ---
--- ulong u = Helper.Create(default(ulong)) ---
--- float? s = Helper.Create(default(float)) ---
--- float? s = null ---
--- float u = Helper.Create(default(float)) ---
--- double? s = Helper.Create(default(double)) ---
--- double? s = null ---
--- double u = Helper.Create(default(double)) ---
--- decimal? s = Helper.Create(default(decimal)) ---
--- decimal? s = null ---
--- decimal u = Helper.Create(default(decimal)) ---
--- IntPtr? s = Helper.Create(default(IntPtr)) ---
--- IntPtr? s = null ---
--- IntPtr u = Helper.Create(default(IntPtr)) ---
--- UIntPtr? s = Helper.Create(default(UIntPtr)) ---
--- UIntPtr? s = null ---
--- UIntPtr u = Helper.Create(default(UIntPtr)) ---
--- Guid? s = Helper.Create(default(Guid)) ---
--- Guid? s = null ---
--- Guid u = Helper.Create(default(Guid)) ---
--- GCHandle? s = Helper.Create(default(GCHandle)) ---
--- GCHandle? s = null ---
--- GCHandle u = Helper.Create(default(GCHandle)) ---
--- ByteE? s = Helper.Create(default(ByteE)) ---
--- ByteE? s = null ---
--- ByteE u = Helper.Create(default(ByteE)) ---
--- IntE? s = Helper.Create(default(IntE)) ---
--- IntE? s = null ---
--- IntE u = Helper.Create(default(IntE)) ---
--- LongE? s = Helper.Create(default(LongE)) ---
--- LongE? s = null ---
--- LongE u = Helper.Create(default(LongE)) ---
--- EmptyStruct? s = Helper.Create(default(EmptyStruct)) ---
--- EmptyStruct? s = null ---
--- EmptyStruct u = Helper.Create(default(EmptyStruct)) ---
--- NotEmptyStruct? s = Helper.Create(default(NotEmptyStruct)) ---
--- NotEmptyStruct? s = null ---
--- NotEmptyStruct u = Helper.Create(default(NotEmptyStruct)) ---
--- NotEmptyStructQ? s = Helper.Create(default(NotEmptyStructQ)) ---
--- NotEmptyStructQ? s = null ---
--- NotEmptyStructQ u = Helper.Create(default(NotEmptyStructQ)) ---
--- NotEmptyStructA? s = Helper.Create(default(NotEmptyStructA)) ---
--- NotEmptyStructA? s = null ---
--- NotEmptyStructA u = Helper.Create(default(NotEmptyStructA)) ---
--- NotEmptyStructQA? s = Helper.Create(default(NotEmptyStructQA)) ---
--- NotEmptyStructQA? s = null ---
--- NotEmptyStructQA u = Helper.Create(default(NotEmptyStructQA)) ---
--- EmptyStructGen<int>? s = Helper.Create(default(EmptyStructGen<int>)) ---
--- EmptyStructGen<int>? s = null ---
--- EmptyStructGen<int> u = Helper.Create(default(EmptyStructGen<int>)) ---
--- NotEmptyStructGen<int>? s = Helper.Create(default(NotEmptyStructGen<int>)) ---
--- NotEmptyStructGen<int>? s = null ---
--- NotEmptyStructGen<int> u = Helper.Create(default(NotEmptyStructGen<int>)) ---
Stack trace
at JIT_Directed._nullabletypes_Desktop_boxunboxvaluetype_ro_boxunboxvaluetype_ro_._nullabletypes_Desktop_boxunboxvaluetype_ro_boxunboxvaluetype_ro_sh()
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
| Queued | OS | Arch | Column1 |
|---|---|---|---|
| 2022-10-31T00:09:11.85Z | osx.1200.arm64.open | arm64 | runtime-coreclr gcstress-extra Checked-gcstress0xc_jitstress2 |
| 2022-10-30T00:34:12.895Z | osx.1200.arm64.open | arm64 | runtime-coreclr gcstress-extra Checked-gcstress0xc_jitstress2 |
| 2022-09-27T21:28:00.087Z | osx.1015.amd64.open | x64 | runtime-staging Release |
| 2022-09-23T06:53:56.591Z | osx.1200.amd64.open | x64 | runtime-coreclr jitstress Checked-jitstress2_tiered |
| 2022-09-21T21:30:34.502Z | osx.1015.amd64.open | x64 | runtime-staging Release |
| 2022-09-21T06:09:57.685Z | osx.1200.amd64.open | x64 | runtime-coreclr jitstress Checked-jitstress1_tiered |
| 2022-09-05T10:07:05.729Z | ubuntu.1804.armarch.open | arm64 | runtime-extra-platforms Release |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
GCStressJitStressCLR JIT issues involving JIT internal stress modesCLR JIT issues involving JIT internal stress modesarch-arm64area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIblocking-clean-ci-optionalBlocking optional rolling runsBlocking optional rolling runsos-macosmacOS aka OSXmacOS aka OSXos-windows
Activity
AndyAyersMS commentedon Nov 2, 2022
Trying to repro on my MacM1, no luck so far...
AndyAyersMS commentedon Nov 2, 2022
Still no luck getting a repro, either via running the test collection via xunit or running the test in isolation, and whether using runfo downloaded bits or my locally built bits, with various forms of sideload stress applied to the machine.
AndyAyersMS commentedon Nov 2, 2022
Given that I can't repro, let's see if these recur over this weekend's runs. If not, I will close.
3 remaining items
AndyAyersMS commentedon Nov 7, 2022
I guess it's my confusion on what
JitStressModeNamesdoes -- it unconditionally enables the stress mode. So you can't use it for isolation, you need to useJitStressModeNamesNot.v-wenyuxu commentedon Nov 8, 2022
Failed in Run: runtime-coreclr gcstress-extra 20221106.1
Failed tests:
Error message:
Stack trace:
AndyAyersMS commentedon Nov 8, 2022
Key stress modes are
Was going to use the inliner's
ReplayPolicyto try and whittle down the set of inlines needed to repro the failure, but inline replay from files is broken because we're seemingly not propagating the IL offsets for nested inlines:Fragment of the saved inline XML:
The offset in that last child shouldn't be 11. not -1.
Inline trees of base run and log replay:
AndyAyersMS commentedon Nov 8, 2022
Managed to hack things so that the right IL offset is emitted in the XML and used during lookup. But inline reduction didn't prove all that helpful -- at least the first few top levels of the tree for
Mainare needed and I recall I never wrote any sort of "bisection" utility to help with trimming down these XML files.So, moving on to debugging the failure.
AndyAyersMS commentedon Nov 8, 2022
The bug is here: we have a copy that sets up a no-gc region, but right afterwards we refer to the register used in the copy:
we should establish that
x0is a gc ref.This comes from a peephole opt where we suppress a load because the register already has the right value.
So seems like we should make sure the previous IG has the same gc properties as the current one.
BruceForstall commentedon Nov 8, 2022
I thought we didn't do peeps across two IGs except when the current IG is an "extend" IG. And I didn't think "extend" IGs could have different GC properties.
AndyAyersMS commentedon Nov 8, 2022
Proably so, but
emitEnableGCdoes not create a new IG. Instead it setsemitForceNewIGto indicate that the next time an instruction is added it must go in a new IG. And so when we are considering the peephole we still think we're in the same IG.AndyAyersMS commentedon Nov 8, 2022
My prospective fix is firing in one PMI case on arm64:
So we might want to consider backporting a fix.
JIT: fix gc hole in peephole optimizations (#78074)
JIT: fix gc hole in peephole optimizations
[release/7.0] JIT: fix gc hole in peephole optimizations (#78109)