New issue
Advanced search Search tips

Issue 330263 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 2014
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Feature

Blocked on: View detail
issue 429358
issue 871574
issue 870731
issue 875279
issue 876915
issue 910699

Blocking:
issue 314403



Sign in to add a comment

Make linux ninja build deterministic

Project Member Reported by mar...@chromium.org, Dec 20 2013

Issue description

1. ninja -C out/Release browser_tests
2. ren out out2
3. gclient runhooks
2. ninja -C out/Release browser_tests

Expected:
Content of out/ and out2/ is byte-for-byte identical.

Actual:
They aren't.

This is specific about Ubuntu 12.04/ninja/clang
 

Comment 1 by mar...@chromium.org, Dec 20 2013

Blocking: chromium:314403

Comment 2 by mar...@chromium.org, Dec 20 2013

Labels: -Build-Toolchain

Comment 3 by mar...@chromium.org, Oct 31 2014

Blockedon: chromium:429358
Project Member

Comment 4 by bugdroid1@chromium.org, Dec 6 2014

------------------------------------------------------------------
r293282 | maruel@chromium.org | 2014-12-06T16:30:18.619191Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/tools/build/scripts/slave/recipe_modules/isolate/resources/compare_build_artifacts.py?r1=293282&r2=293281&pathrev=293282

Strip the last files from linux whitelist.

linux is now deterministic!
Add link to each OS specific issue in compare_build_artifacts.py for
maintainability.

R=sebmarchand@chromium.org
BUG= 330263 ,314403

Review URL: https://codereview.chromium.org/787503002
-----------------------------------------------------------------
Labels: -OS-Mac OS-Linux
Owner: mar...@chromium.org
Status: Fixed
Last NaCl fix was rolled in which fixed the last non deterministic file!

There are still spurious .isolated files non-determinism but this is due to the way the build is done vs how it's done on the TS and CI so it's not a problem there. I'll fix the .isolated non-determinism outside of the scope of this issue since it's not OS specific. In short, it's because the .isolated file is being created while other compile steps fill the referenced directories that are unneededlessly filled for other test executables.
Project Member

Comment 7 by bugdroid1@chromium.org, Mar 31 2015

------------------------------------------------------------------
r294569 | maruel@chromium.org | 2015-03-25T20:26:23.643520Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/tools/build/scripts/slave/recipe_modules/isolate/resources/compare_build_artifacts.py?r1=294569&r2=294568&pathrev=294569

Make 'Linux deterministic build' green.

It's currently red due to 3 files, which affects one fourth isolated file. The
files are all pnacl related.

R=sebmarchand@chromium.org
BUG= 330263 
BUG=429358

Review URL: https://codereview.chromium.org/1038713002
-----------------------------------------------------------------
FTR, this was only fixed in the distributed compilation case only fairly recently.
Project Member

Comment 9 by bugdroid1@chromium.org, Jun 9 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/tools/build.git/+/873816c868610873fc67b3a114acedf3a8cabf57

commit 873816c868610873fc67b3a114acedf3a8cabf57
Author: sebmarchand@chromium.org <sebmarchand@chromium.org>
Date: Mon Jun 01 16:07:56 2015

Deterministic builder: Update the Linux blacklist.

BUG= 330263 

Review URL: https://codereview.chromium.org/1153013004

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/build@295474 0039d316-1c4b-4281-b951-d872f2087c98

[modify] http://crrev.com/873816c868610873fc67b3a114acedf3a8cabf57/scripts/slave/recipe_modules/isolate/resources/compare_build_artifacts.py

Project Member

Comment 10 by bugdroid1@chromium.org, Nov 9 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/54934b6280e5bc3f8a823e6543cab3dbdb304ccb

commit 54934b6280e5bc3f8a823e6543cab3dbdb304ccb
Author: yyanagisawa <yyanagisawa@chromium.org>
Date: Wed Nov 09 21:58:17 2016

Whitelist flatc in Linux.

Since __DATE__ is used in flatc, compile result sometimes not
deterministic.

BUG=314403
BUG= 330263 

Review-Url: https://codereview.chromium.org/2484943005
Cr-Commit-Position: refs/heads/master@{#431045}

[modify] https://crrev.com/54934b6280e5bc3f8a823e6543cab3dbdb304ccb/tools/determinism/compare_build_artifacts.py

Project Member

Comment 11 by bugdroid1@chromium.org, Nov 11 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4bae8cb9758e013af1fe31af033f13fa5d117355

commit 4bae8cb9758e013af1fe31af033f13fa5d117355
Author: yyanagisawa <yyanagisawa@chromium.org>
Date: Fri Nov 11 16:53:44 2016

Also whitelist ppapi_nacl_tests_* on Linux.

BUG= 654989 
BUG= 330263 

Review-Url: https://codereview.chromium.org/2496903002
Cr-Commit-Position: refs/heads/master@{#431579}

[modify] https://crrev.com/4bae8cb9758e013af1fe31af033f13fa5d117355/tools/determinism/compare_build_artifacts.py

Project Member

Comment 12 by bugdroid1@chromium.org, Aug 22

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d3aaaf5c3915d25ec9942f793176abb1a6809605

commit d3aaaf5c3915d25ec9942f793176abb1a6809605
Author: erikchen <erikchen@chromium.org>
Date: Wed Aug 22 00:41:33 2018

Add deterministic build whitelist files for Linux.

Previously, compare_build_artifacts.py only compared certain executables in the
output directories. This CL:
https://chromium-review.googlesource.com/c/chromium/tools/build/+/1180706 makes
deterministic builder use .isolate files to compare both data files and the
appropriate executables. With this change, we've discovered that the data files
included in this CL are also not deterministic.

Bug:  870731 ,  330263 
Change-Id: Ia02c3f99d35ab690f5a709c0adb987d2820201b5
Reviewed-on: https://chromium-review.googlesource.com/1183999
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Erik Chen <erikchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#584940}
[modify] https://crrev.com/d3aaaf5c3915d25ec9942f793176abb1a6809605/tools/determinism/deterministic_build_whitelist.pyl

Project Member

Comment 13 by bugdroid1@chromium.org, Aug 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b5d68e39ad37003842d10e0e7c06603ac5058883

commit b5d68e39ad37003842d10e0e7c06603ac5058883
Author: erikchen <erikchen@chromium.org>
Date: Tue Aug 28 20:04:29 2018

Update deterministic build whitelist for Linux.

browser_tests.isolated is not deterministic on Linux. This was previously not
noticed because the .isolated file was not being generated.

Bug:  876915 ,  870731 ,  330263 
Change-Id: I3022bc0b6e28478b44df54979c5bb5e5fa9cc834
Reviewed-on: https://chromium-review.googlesource.com/1194469
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Erik Chen <erikchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#586823}
[modify] https://crrev.com/b5d68e39ad37003842d10e0e7c06603ac5058883/tools/determinism/deterministic_build_whitelist.pyl

Blockedon: 876915
Blockedon: 870731
Blockedon: 875279
Blockedon: 871574
Project Member

Comment 18 by bugdroid1@chromium.org, Sep 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d7a6ffc9b8c3dc898415e98c855abe86c499fb5a

commit d7a6ffc9b8c3dc898415e98c855abe86c499fb5a
Author: Nico Weber <thakis@chromium.org>
Date: Fri Sep 07 17:16:16 2018

Deterministic Linux: Remove most whitelist entries.

They haven't been needed in (at least) the last 4 builds, so lock in the
progression.

The pak file determinism progression is likely from
https://chromium-review.googlesource.com/1164536

The v8 isolate is still nondeterministic in component builds,
so add some (hopefully temporary) logic to have files that are
nondeterministic only in component builds.

Bug:  330263 
Change-Id: I721b1ff543410c066d6ef6ea6ffedbc4ba4f180b
Reviewed-on: https://chromium-review.googlesource.com/1213525
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Reviewed-by: Erik Chen <erikchen@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589560}
[modify] https://crrev.com/d7a6ffc9b8c3dc898415e98c855abe86c499fb5a/tools/determinism/compare_build_artifacts.py
[modify] https://crrev.com/d7a6ffc9b8c3dc898415e98c855abe86c499fb5a/tools/determinism/deterministic_build_whitelist.pyl

Project Member

Comment 19 by bugdroid1@chromium.org, Sep 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9ccdf0c445f81c092874db6da20626c3c76cba92

commit 9ccdf0c445f81c092874db6da20626c3c76cba92
Author: Nico Weber <thakis@chromium.org>
Date: Fri Sep 07 18:40:19 2018

Fix syntax after https://chromium-review.googlesource.com/c/chromium/src/+/1213525/

TBR=tikuta@chromium.org

Bug:  330263 
Change-Id: I45e4e7597eeaf602c4cb3daafe66e73f33574cc9
Reviewed-on: https://chromium-review.googlesource.com/1213536
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589601}
[modify] https://crrev.com/9ccdf0c445f81c092874db6da20626c3c76cba92/tools/determinism/compare_build_artifacts.py

Project Member

Comment 20 by bugdroid1@chromium.org, Sep 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a12ad919ad5cf452509a084981d34fadccbfe6e3

commit a12ad919ad5cf452509a084981d34fadccbfe6e3
Author: Nico Weber <thakis@chromium.org>
Date: Sun Sep 09 15:05:10 2018

Fix regex after https://chromium-review.googlesource.com/c/chromium/src/+/1213525

I meant '\s*', not '\w*'. Also remove a \b that has no effect.

TBR=tikuta

Bug:  330263 
Change-Id: I91595cf10c67281ebc023d66bddfd940b85f6381
Reviewed-on: https://chromium-review.googlesource.com/1214629
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Takuto Ikuta <tikuta@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589802}
[modify] https://crrev.com/a12ad919ad5cf452509a084981d34fadccbfe6e3/tools/determinism/compare_build_artifacts.py

Blockedon: 910699

Sign in to add a comment