Uh oh!
There was an error while loading. Please reload this page.
Fix and Test case for #27924 - #1059
Conversation
…perand, to preserve GC-ness.
| else | ||
| { | ||
| inst_RV_RV(ins_Copy(targetType), targetReg, op1reg, targetType); | ||
| inst_RV_RV(ins_Copy(targetType), targetReg, op1reg, op1->TypeGet()); |
There was a problem hiding this comment.
Hmm, should gcMarkRegPtrVal below also use op1->TypeGet()?
There was a problem hiding this comment.
Interesting - it probably should. It gets set to a byref during emit, which fixes the GC info. I confess that I'm not sure how regSet.m_rsGCInfo.gcRegByrefSetCur is used during the codegen phase, but I presume that, since it's maintained, it must be depended on. I'll go ahead and change that and dig a little deeper in the meantime.
There was a problem hiding this comment.
AFAICT, the codegen-time gc info is used at labels and calls, and hence, since this is a transitory byref, it wouldn't show up as being wrong in this case. That said, I believe it should be maintained correctly.
CarolEidt
commented
Dec 20, 2019
@dotnet/dnceng - I am getting package failures even on retry:
|
CarolEidt
commented
Dec 20, 2019
PTAL @dotnet/jit-contrib |
mmitche
commented
Dec 20, 2019
That looks like a build issue. @ViktorHofer@dagood I thought the live-live build was working now? That looks like it's referencing packages from yesterday? |
| static void Work() | ||
| { | ||
| for (uint i = 0; i < 1000000; i++) { |
dagood
commented
Dec 20, 2019
#839 documents that you need to do a fresh build whenever you cross a day boundary. Looks like it applies to CI as well. I believe this is a combination of:
|
dagood
commented
Dec 20, 2019
It looks like the original error was also caused by UTC day tickover. Here's the timestamp on the first line of a failing Installer build step in attempt 1: 2019-12-20T00:03:04.6739571Z Core-Setup stopped having this problem once it moved off BuildTools onto Arcade. Now we've got it again because of global dotnet/runtime settings. Right now, any build where Libraries => Installer spans a UTC day should fail this way. Adding it to the CI problem tracking issue #702. |
Uh oh!
There was an error while loading. Please reload this page.
jashook
left a comment
There was a problem hiding this comment.
Approved but meant to comment.
Having an innerloop test which sets GCStress 0xC seems incorrect. We know that gc stress has a certain level of unreliability that does not fit with our innerloop test bar.`
CarolEidt
commented
Dec 20, 2019
@dotnet/dnceng - I re-pushed (with a change to address PR feedback), but I'm still getting some inscrutable failures - e.g. https://helix.dot.net/api/2019-06-17/jobs/fda888e8-b6d4-40fc-ba3f-7fb296c47338/workitems/JIT.jit64.mcc/console simply ends with:
Any suggestions for how to move this forward? |
BruceForstall
commented
Jan 6, 2020
@CarolEidt The remaining CI failures are known Windows arm failures, so is this ready to merge? |
CarolEidt
commented
Jan 7, 2020
Since this adds a new test, I was hoping to get arm testing on this, but perhaps at this point I should just build and test on arm myself. |
This is the fix for #27924. This is a GC hole bug that was found externally, #27590. The cause is that the JIT was using the target type of the subtract when it needed to make a copy of the source, but it needs to use the source type. ## Customer Impact Corruption of state that is non-deterministic and hard to track down. ## Regression? Not a recent regression, but exposed by Unsafe.ByteOffset. ## Testing The fix has been verified in the runtime repo. ## Risk Low: The fix is straightfoward and only impacts 3 lines of code.
This is the fix for #27924. This is a GC hole bug that was found externally, #27590. The cause is that the JIT was using the target type of the subtract when it needed to make a copy of the source, but it needs to use the source type. ## Customer Impact Corruption of state that is non-deterministic and hard to track down. ## Regression? Not a recent regression, but exposed by Unsafe.ByteOffset. ## Testing The fix has been verified in the runtime repo. ## Risk Low: The fix is straightfoward and only impacts 3 lines of code.
https://github.com/dotnet/coreclr/issues/27924