On 27 Feb 2014, at 12:02 am, Rene Groeschke <[email protected]> wrote:



26 Feb 2014 05:51



You sure that’s the case? ASLR is applied at execution time, not compile time (it’s completely pointless to do this at compile time).

There are apparently some bugs in older versions of Clang that prevent it producing deterministic output, which looks more likely the problem we’re hitting based on that diff you posted above. The clang version that comes with Ubuntu 12.04 was affected, which means any test running on agent1 - agent3 is probably going to fail some times.

Have you seen this test fail on the build vms?

I know there where bugs fixed in clang related to deterministic builds, but none of them seem to be related to the issue I have seen. I've tested this with also on the build vms with the same behaviour. I ran tests compiling the same source 10 (20) times and got different kinds of object files generated. When disabling ASLR by calling "setarch `uname -m` -R /bin/bash upfront, this test passes and always generates exactly the same object file (on ubuntu 12.04 and 13.10). The test I used for this can be found here:

https://github.com/gradle/gradle/blob/master/subprojects/cpp/src/integTest/groovy/org/gradle/nativebinaries/language/objectivec/ObjectiveCLanguageIncrementalBuildIntegrationTest.groovy#L51

Ok, let’s just treat this the same way we treat the timestamps that visual c++ puts into the object files, rather than mess with the machine settings.


--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com



Reply via email to