-
Notifications
You must be signed in to change notification settings - Fork 35.5k
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
Gitian-built 0.9.0rc1 : windows bitcoin-qt.exe mismatch #3612
Comments
For debugging other gitian mismatches, here are my dependency checksums: Linux:
Windows:
|
I'm also seeing the bitcoin-qt.exes (and the setups, of course) not matching between builds, but I also noticed that Gavin and I don't have matching outputs. I don't know if the fact that my builds and Gavin's don't match is related, though... I am using LXC to build, while Gavin uses (I believe) VirtualBox, but I have successfully built matching binaries for 0.8.6 in LXC on that machine, so I don't know what changed. Here are my outputs: Linux:
Windows:
|
Looking into the determinism problems for Windows first. |
@laanwj What's your build system? LXC? KVM? VBox? On Monday, February 3, 2014, Wladimir J. van der Laan <
|
KVM |
Interesting. When I get a chance, I'll try building in LXC on another On Monday, February 3, 2014, Wladimir J. van der Laan <
|
Comparing two bitcoin-qt.exes the first difference is at offset 0xD8. This is likely some timestamp part of the PE header:
There is also a large non-matching tract 01270E70....014A1000. This contains image data and text and appear to be the compiled Qt resources. Possibly an ordering issue. Edit: the field at 0xD8 (PE_header+0x58) is a 16-bit checksum. It makes sense for this to not match. So the problem is fully in the compiled Qt resources. Edit.2: Yep, the Edit.3: The Qt4 resource compiler does not do this randomization, as we still use Qt4 on Linux this explains why this only happens on Windows. Looking into a way around this Qt5 'feature'. Edit.4: Oh joy, all of this is due to a QHash security fix. Every run of an executable, the ordering is different. https://qt.gitorious.org/qt/qtbase/commit/c01eaa438200edc9a3bbcd8ae1e8ded058bea268 . They shouldn't be using a QHash here but some ordered dictionary... Edit.5: I think I found a way to override the behavior without patching Qt rcc source (for now) by setting Edit 6: That worked. I'll submit a pull for this and #3610 later. |
- Add 'g++' package (virtualbox images don't have this by default) - Workaround for determinism in Qt5 resources - Pass --disable-maintainer-mode --disable-dependency-tracking to configure for libqrencode to avoid random errors about missing m4 directory - Fix typo -with-pic -> --with-pic It is not necessary to rebuild dependencies after this commit. Fixes bitcoin#3610 and bitcoin#3612.
Should be solved by #3625 |
I'm successfully reproducibly gitian-building Linux 0.9.0rc1:
But two separate Windows builds do not match:
The bitcoin-qt.exes (and, therefore, the -setup.exes) are the only mismatches. I haven't looked into what is different.
The text was updated successfully, but these errors were encountered: