-
Notifications
You must be signed in to change notification settings - Fork 12.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
Reproducible builds regression in nightly #47135
Comments
Thanks for the report! Do you have a perhaps more isolated reproduction of this? A naive attempt to reproduce this locally (cargo build twice and see what changes) unfortunately wasn't able to reproduce this. |
If you run Can we get a longer listing of the tag #34902 |
hey @alexcrichton and @infinity0, thanks for taking the time to look into this. The project that I test covers a large amount of edge cases (eg. FFI), I probably need some time to track it down to a specific edgecases that is causing problems. I tried
I've attached a gist for both diffscope.out generated by reprotest and diffoscope.json generated with
https://gist.github.com/kpcyrd/ac5c8a4d8837d18d5f7f5bc074b71924 This was generated using:
If it helps I can offer writing a script that tests |
Nominating for prioritization in @rust-lang/compiler meeting . |
Hi! I'm trying to figure out what is happening here. In particular, I can't tell how reliably this can be reproduced etc.
If it is possible to bisect over nightlies, that would be tremendously helpful. |
triage: P-medium It is our intention to support reproducible builds, but they are not fully supported; calling P-medium. It'd be great to fix though. |
Sorry for my late reply. I've tested every nightly from 2017-12-19 to 2017-12-26: nightly-2017-12-19: ✅ reproducible |
This is how I setup my tests:
Apply this patch:
Build the test container and run the tests:
I can reproduce it reliably this way. |
Maybe this is because of multiple codegen units + ThinLTO? We enabled that by default during that time, didn't we, @alexcrichton? (#46910) Does it also reproduce if you add |
@michaelwoerister The binary was reproducible with I'm by no means an expert regarding these features, would it be possible to run codegen concurrently, wait until they finish and then sort the results before using them? |
I believe this is fixed in nightly now? I'm not really sure why though. I bisected the PR that fixed this to #47522, although nothing there looks related to reproducible builds. #47467 seems the most likely, but if that's true then it may mean that the bug is still lurking and hidden rather than fixed. |
@alexcrichton You're right, I forgot to re-test nightly. I rebuilt with nightly a couple of times and everything was working nicely. I've re-enabled this test and started to add it for another project as well, I'm going to let you know if I notice anything again. Thanks everybody! |
Maybe ThinLTO is not entirely deterministic. I wouldn't be surprised. |
hello,
I'm running a CI system with reprotest to ensure the binaries built from the project are reproducible and verifiable. This system started to fail between 2017-12-19 and 2017-12-26:
Build 193, 2017-12-19T00:56:25Z, e6446ad65d193e0155ac02d58f338f9136182267, https://travis-ci.org/kpcyrd/sniffglue/jobs/318377138
Build 196, 2017-12-26T01:20:33Z, e6446ad65d193e0155ac02d58f338f9136182267, https://travis-ci.org/kpcyrd/sniffglue/jobs/321613070
I assume this is a regression in rust nightly, I can reproduce the test failure locally with a current rust nightly. My tests pass when switching from nightly to stable (with some magic to access
-Zremap-path-prefix-{from,to}
.My testsuite looks like this:
You can run this yourself using:
The full diffoscope report is quite large, the gist looks like this:
cc: @infinity0
The text was updated successfully, but these errors were encountered: