Skip to content
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

Revert "Skip binary for determinism checking" #49402

Merged
1 commit merged into from
Nov 16, 2020

Conversation

AlekseyTs
Copy link
Contributor

@AlekseyTs AlekseyTs commented Nov 16, 2020

Reverts #48450

Build Kind Start Time
888293 Rolling 2020-17-11
888285 Rolling 2020-17-11
888573 Rolling 2020-17-11
888579 Rolling 2020-17-11
889535 Rolling 2020-17-11
890188 Rolling 2020-18-11
889407 Rolling 2020-17-11
893070 Rolling 2020-19-11
893140 PR 49441 2020-19-11
893066 PR 49495 2020-19-11
892194 PR 48468 2020-19-11
888220 PR 49414 2020-16-11
888940 PR 49394 2020-17-11
889265 PR 49441 2020-17-11

@AlekseyTs
Copy link
Contributor Author

CC @jasonmalinowski

@RikkiGibson
Copy link
Contributor

VS_Integration release_32 failure appears to be due to a network issue (HTTP 429--is the CI machine getting rate limited?)

@ghost
Copy link

ghost commented Nov 16, 2020

Hello @AlekseyTs!

Because this pull request has the auto-merge label, I will be glad to assist with helping to merge this pull request once all check-in policies pass.

p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (@msftbot) and give me an instruction to get started! Learn more here.

Copy link

@ghost ghost left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auto-approval

@ghost ghost merged commit 99ad990 into master Nov 16, 2020
@ghost ghost deleted the revert-48450-disable-determinism-checking branch November 16, 2020 23:11
@ghost ghost added this to the Next milestone Nov 16, 2020
@jaredpar
Copy link
Member

It appears like this is failing again once we removed the skip here .

https://dev.azure.com/dnceng/public/_build/results?buildId=888293

@AlekseyTs
Copy link
Contributor Author

It appears like this is failing again once we removed the skip here .

How do we know it is the same reason?

@jaredpar
Copy link
Member

How do we know it is the same reason?

I haven't done the diff yet so I'm not 100% sure but the timeline of the revert, the appearance of the failures and the assembly where the failures occur all line up. In the process of doing the diff at hte moment.

@jaredpar
Copy link
Member

Diff indicates this is the same issue. The case difference in Span is showing up again.

image

@AlekseyTs
Copy link
Contributor Author

AlekseyTs commented Nov 17, 2020

The casing of the field name now should match casing in the property name. Is it possible the fix isn't there for some reason, because I would expect to see the difference in the property name as well.

@jaredpar
Copy link
Member

Not sure where to write down how I investigate bugs like this so just going to throw it here for now. First step is to grab the determinism logs from the build

image

The before / after versions of the binaries will appear in the Left and Right sub-directory. From there I run the folloing in both directories

mdv .\Microsoft.CodeAnalysis.EditorFeatures2.UnitTests.dll /out:data.txt

Then I just windiff the data.txt file and see what changed. There are a number of diffs here but most of them are just changing a token value, not the name. This is the only place where the name changes.

@jaredpar
Copy link
Member

Is it possible the fix isn't there for some reason, because I would expect to see the difference in the property name as well.

Scrolling through the rest of the diff I see that's mor ethan just the field

image

image

The string table also shows the different casing (that diff doesn't really fit well into a screen shot but can provid if you want).

@AlekseyTs
Copy link
Contributor Author

So, there is a difference in parameter name, but not in property name? Or we don't check property names?

@AlekseyTs
Copy link
Contributor Author

I'll try following your steps to take a look at the binary itself

@jaredpar
Copy link
Member

So, there is a difference in parameter name, but not in property name? Or we don't check property names?

The property name is the same here in both sets.

The check we do here is a byte for byte comparison of the DLLs. So it checks literally everything that we output. The use of mdv is just a way of turning the binary into text so a human can diff and see what changed. It's not actually used in the job here.

@AlekseyTs
Copy link
Contributor Author

Clearly there was a problem with constructor parameters, but I cannot figure out how fields can be non-deterministic after the recent fix. Fixed parameters and added temporary throws to detect if our assumptions are violated in some obscure scenarios in #49467. Hopefully, instead of simply getting a comparison failure we'll get a call stack.

@sharwell
Copy link
Member

@AlekseyTs This change has resulted in 8 failed rolling builds in the past 3 days. Can you revert this and file a follow-up issue?

/cc @allisonchou

@AlekseyTs
Copy link
Contributor Author

The issues actually have been addressed. See #49483 and #49467.

@sharwell
Copy link
Member

@AlekseyTs thank you!!

@allisonchou allisonchou modified the milestones: Next, 16.9.P2 Nov 24, 2020
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants