-
Notifications
You must be signed in to change notification settings - Fork 37.7k
Fix QPainter non-determinism on macOS (0.21 backport) #20479
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
Conversation
Aplies a patch to Qt that fixes the non-determinism by modifying Qt. The source of the non-determinism is how LLVM 8 optimizes qt_intersect_spans when compiling. The particular optimization that seems to be causing the problems is that a temp variable is being added for spans->y. For some reason, when it does this, it chooses different instructions to use when making that variable. We bypass this problem by patching qt_intersect_spans to always make and use this local variable. Github-Pull: bitcoin#20447 Rebased-From: 8f7d1b3 Tree-SHA512: 558da5c2bb0373e2a89f2c219170f802036e0e87cc8e808336b23d074152cb893007a440f46ec957156b0921355cd18502710f2d224f27bc26e934c50ebebc41
Thanks. |
ACK ab23a83 |
fwiw this is my gitian output for commit ab23a83:
|
I have different gitian results:
@laanwj Did you clean the cache before building? |
No, I did not clean the cache before building. Will try… |
Unfortunately I still get the same output after cleaning my cache (deleting
|
I'm seeing the same result as @laanwj: Generating report
9df7d246f4b55910bd97aa5b010f78d5c9ffd7ca44950230df39a22205d7fe2f bitcoin-ab23a83400d5-osx-unsigned.dmg
5a51563c3bf09248f5bce66a690a1773e964d649c45b6f6aaf82748fa5caff7d bitcoin-ab23a83400d5-osx-unsigned.tar.gz
d894452b461b9b9e779b6868a0c1d9ea0c33339694470646082234217ddcc05d bitcoin-ab23a83400d5-osx64.tar.gz
d671af2ac2b9ec021c1cbb4614209b504d5bb4e1b1ddc922c7f0adcd99f529b6 src/bitcoin-ab23a83400d5.tar.gz
4dc65a795df2c40c086ddcc76990d9c623325480a0b30e59b12157289a881180 bitcoin-core-osx-0.21-res.yml |
Same here:
|
Cleaned up everything and now I get the matching result:
|
Aplies a patch to Qt that fixes the non-determinism by modifying Qt. The
source of the non-determinism is how LLVM 8 optimizes qt_intersect_spans
when compiling. The particular optimization that seems to be causing the
problems is that a temp variable is being added for spans->y. For some
reason, when it does this, it chooses different instructions to use when
making that variable. We bypass this problem by patching
qt_intersect_spans to always make and use this local variable.
Github-Pull: #20447
Rebased-From: 8f7d1b3
Tree-SHA512: 558da5c2bb0373e2a89f2c219170f802036e0e87cc8e808336b23d074152cb893007a440f46ec957156b0921355cd18502710f2d224f27bc26e934c50ebebc41