Closed Bug 1595218 Opened 5 years ago Closed 5 years ago

Update builders to rustc 1.39

Categories

(Firefox Build System :: General, task)

task
Not set
normal

Tracking

(firefox73 fixed)

RESOLVED FIXED
mozilla73
Tracking Status
firefox73 --- fixed

People

(Reporter: chmanchester, Assigned: chmanchester)

References

(Blocks 1 open bug)

Details

(Keywords: perf-alert)

Attachments

(4 files)

This released yesterday.

Assignee: nobody → cmanchester
Depends on: 1595212
Depends on: 1596505
Depends on: 1596503
Pushed by cmanchester@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/11c0576cf3d5 Update builders to rustc 1.39 r=froydnj https://hg.mozilla.org/integration/autoland/rev/46fe2af291cf Update bootstrap to upgrade to stable rust. r=froydnj https://hg.mozilla.org/integration/autoland/rev/1808b1722f64 Update rust target detection for rustc 1.39. r=glandium

Re-landed. I started from the wrong place and lando only picked up the bottom commmit.

Flags: needinfo?(cmanchester)

Hello!

firefox-68.3.0ESR does not compiled with Rust-1.39 bacause various rust errors like

 8:59.70 error[E0119]: conflicting implementations of trait `std::clone::Clone` for type `gecko_bindings::structs::root::mozilla::GeckoXUL`:
 8:59.70      --> /builddir/build/BUILD/icecat-68.3.0/objdir/i686-unknown-linux-gnu/release/build/style-2d479f0a624fbc0c/out/gecko_properties.rs:20209:1

 6:36.58 error[E0204]: the trait `Copy` may not be implemented for this type
 6:36.58   --> /builddir/build/BUILD/icecat-68.3.0/objdir/i686-unknown-linux-gnu/release/build/style-2d479f0a624fbc0c/out/gecko/structs.rs:23:660889

Does this patch fix these errors?

Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Target Milestone: mozilla73 → ---
Backout by shindli@mozilla.com: https://hg.mozilla.org/mozilla-central/rev/5f77291b48ff Backed out 3 changesets for causing wrench bustages on central CLOSED TREE a=backout

Ok, it appears the wrench deps no longer run on try. I'll downgrade them for now so we can get this landed...

Flags: needinfo?(cmanchester)
Pushed by cmanchester@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/30bb03117312 Update builders to rustc 1.39 r=froydnj https://hg.mozilla.org/integration/autoland/rev/d7f9a4045360 Update bootstrap to upgrade to stable rust. r=froydnj https://hg.mozilla.org/integration/autoland/rev/9fdeeb697611 Update rust target detection for rustc 1.39. r=glandium
Backout by rgurzau@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/fe9435809692 Backed out 3 changesets for Windows wrench failures.

Backed out 3 changesets (bug 1595218) for Windows wrench failures.

Backout link: https://hg.mozilla.org/integration/autoland/rev/fe94358096926edc1404cdd2e864ce66a38fc91f

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&revision=9fdeeb69761156206ba4184344b33eb53581f6c9&selectedJob=279492801

Log link: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=279492801&repo=autoland&lineNumber=1315

Log snippet:

[task 2019-12-04T03:46:07.891Z] error: use of deprecated item 'std::mem::uninitialized': use mem::MaybeUninit instead
[task 2019-12-04T03:46:07.891Z] --> wrench\src\egl.rs:60:54
[task 2019-12-04T03:46:07.891Z] |
[task 2019-12-04T03:46:07.891Z] 60 | let mut major: ffi::egl::types::EGLint = mem::uninitialized();
[task 2019-12-04T03:46:07.891Z] | ^^^^^^^^^^^^^^^^^^
[task 2019-12-04T03:46:07.891Z]
[task 2019-12-04T03:46:07.891Z] error: use of deprecated item 'std::mem::uninitialized': use mem::MaybeUninit instead
[task 2019-12-04T03:46:07.891Z] --> wrench\src\egl.rs:61:54
[task 2019-12-04T03:46:07.891Z] |
[task 2019-12-04T03:46:07.891Z] 61 | let mut minor: ffi::egl::types::EGLint = mem::uninitialized();
[task 2019-12-04T03:46:07.891Z] | ^^^^^^^^^^^^^^^^^^
[task 2019-12-04T03:46:07.891Z]
[task 2019-12-04T03:46:07.891Z] error: use of deprecated item 'std::mem::uninitialized': use mem::MaybeUninit instead
[task 2019-12-04T03:46:07.891Z] --> wrench\src\egl.rs:234:34
[task 2019-12-04T03:46:07.891Z] |
[task 2019-12-04T03:46:07.891Z] 234 | let mut value = unsafe { mem::uninitialized() };
[task 2019-12-04T03:46:07.892Z] | ^^^^^^^^^^^^^^^^^^
[task 2019-12-04T03:46:07.892Z]
[task 2019-12-04T03:46:09.188Z] error: aborting due to 15 previous errors
[task 2019-12-04T03:46:09.188Z]
[task 2019-12-04T03:46:09.323Z] error: could not compile wrench.
[task 2019-12-04T03:46:09.323Z]
[task 2019-12-04T03:46:09.323Z] Caused by:
[task 2019-12-04T03:46:09.323Z] process didn't exit successfully: rustc --edition=2018 --crate-name wrench wrench\src\main.rs --color never --emit=dep-info,link -C debuginfo=2 --test --cfg "feature=\"default\"" --cfg "feature=\"env_logger\"" -C metadata=585e774adfca68ec -C extra-filename=-585e774adfca68ec --out-dir z:\task_1575429973\build\src\gfx\wr\target\debug\deps -C incremental=z:\task_1575429973\build\src\gfx\wr\target\debug\incremental -L dependency=z:\task_1575429973\build\src\gfx\wr\target\debug\deps --extern app_units=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libapp_units-125723de43ccbc9c.rlib --extern base64=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libbase64-1b664bcecc1769e2.rlib --extern bincode=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libbincode-a2a0a7edc44a3c81.rlib --extern byteorder=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libbyteorder-dddd2788babee894.rlib --extern clap=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libclap-81262606ad8195a0.rlib --extern crossbeam=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libcrossbeam-207ba0e8d42a5a3b.rlib --extern dwrote=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libdwrote-aaae065a8384c53c.rlib --extern env_logger=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libenv_logger-8d7f8b6227eea3a5.rlib --extern euclid=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libeuclid-49f4cd41cd375ee9.rlib --extern gleam=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libgleam-483e2a703fcd1fa6.rlib --extern glutin=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libglutin-851de8934cb11706.rlib --extern image=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libimage-6c5a0c613a90cbe3.rlib --extern log=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\liblog-969dea115044d5aa.rlib --extern mozangle=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libmozangle-e3213f39c1ee2fdc.rlib --extern ron=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libron-da020db76b769c6b.rlib --extern semver=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libsemver-2d3cf98f72ff806b.rlib --extern serde=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libserde-e74b0e8090191cb2.rlib --extern serde_json=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libserde_json-c68455de042a716b.rlib --extern time=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libtime-9abc389c1d98bf25.rlib --extern webrender=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libwebrender-c3e7145efc5136f0.rlib --extern webrender_api=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libwebrender_api-f97fe0fcf2ceacc0.rlib --extern winit=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libwinit-39b3bb39073fbca3.rlib --extern yaml_rust=z:\task_1575429973\build\src\gfx\wr\target\debug\deps\libyaml_rust-cc82e81c2bc658c5.rlib --deny warnings -L native=z:\task_1575429973\build\src\gfx\wr\target\debug\build\mozangle-c8a8d99f988df2d6\out -L native=z:\task_1575429973\build\src\gfx\wr\target\debug\build\mozangle-c8a8d99f988df2d6\out (exit code: 1)
[task 2019-12-04T03:46:09.328Z]
[task 2019-12-04T03:46:09.328Z] z:\task_1575429973\build\src\gfx\wr\wrench>if 101 NEQ 0 EXIT /b 101
[fetches 2019-12-04T03:46:09.342Z] removing Z:/task_1575429973/fetches
[fetches 2019-12-04T03:46:11.631Z] finished
[taskcluster 2019-12-04T03:46:11.665Z] Exit Code: 101
[taskcluster 2019-12-04T03:46:11.665Z] User Time: 15.625ms
[taskcluster 2019-12-04T03:46:11.665Z] Kernel Time: 15.625ms
[taskcluster 2019-12-04T03:46:11.665Z] Wall Time: 14m11.4521882s
[taskcluster 2019-12-04T03:46:11.665Z] Result: FAILED
[taskcluster 2019-12-04T03:46:11.665Z] === Task Finished ===
[taskcluster 2019-12-04T03:46:11.665Z] Task Duration: 14m11.4531766s
[taskcluster 2019-12-04T03:46:11.945Z] Uploading redirect artifact public/logs/live.log to URL https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/BAN_UvYqThmASTrWIEJbgw/runs/0/artifacts/public/logs/live_backing.log with mime type "text/plain; charset=utf-8" and expiry 2020-12-03T03:31:15.512Z
[taskcluster:error] exit status 101

Flags: needinfo?(cmanchester)

This was fixed in bug 1601376. Re-landing shortly.

Flags: needinfo?(cmanchester)
Pushed by cmanchester@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/93ec75efbf41 Update builders to rustc 1.39 r=froydnj https://hg.mozilla.org/integration/autoland/rev/f2f230a3028d Update bootstrap to upgrade to stable rust. r=froydnj https://hg.mozilla.org/integration/autoland/rev/499b0c27da4f Update rust target detection for rustc 1.39. r=glandium

Wow, a valgrind leak snuck in between landings. Will investigate...

Flags: needinfo?(cmanchester)

Stacks along the lines of:

==8353== 24,704 bytes in 4 blocks are definitely lost in loss record 8,180 of 8,183
==8353==    at 0x4C2B280: malloc+112 (vg_replace_malloc.c:308)
==8353==    by 0x143E858C: std::thread::local::fast::Key<T>::try_initialize+28 (src/libstd/sys/unix/alloc.rs:14)
==8353==    by 0x13F0B899: UnknownInlinedFun (local.rs:416)
==8353==    by 0x13F0B899: UnknownInlinedFun (<::std::thread::local::__thread_local_inner macros>:29)
==8353==    by 0x13F0B899: try_with<core::mem::manually_drop::ManuallyDrop<servo_arc::Arc<atomic_refcell::AtomicRefCell<style::sharing::SharingCacheBase<style::sharing::FakeCandidate>>>>,closure-0,servo_arc::Arc<atomic_refcell::AtomicRefCell<style::sharing::SharingCacheBase<style::sharing::FakeCandidate>>>> (local.rs:259)
==8353==    by 0x13F0B899: with<core::mem::manually_drop::ManuallyDrop<servo_arc::Arc<atomic_refcell::AtomicRefCell<style::sharing::SharingCacheBase<style::sharing::FakeCandidate>>>>,closure-0,servo_arc::Arc<atomic_refcell::AtomicRefCell<style::sharing::SharingCacheBase<style::sharing::FakeCandidate>>>> (local.rs:239)
==8353==    by 0x13F0B899: style::sharing::StyleSharingCache<E>::new+121 (mod.rs:532)
==8353==    by 0x13F14CC5: style::parallel::create_thread_local_context+37 (context.rs:798)
==8353==    by 0x13F14154: <rayon_core::job::HeapJob<BODY> as rayon_core::job::Job>::execute+596 (parallel.rs:130)
==8353==    by 0x14103DEB: rayon_core::registry::WorkerThread::wait_until_cold+523 (job.rs:59)
==8353==    by 0x13F13AEA: rayon_core::scope::scope_fifo::{{closure}}+7322 (/builds/worker/workspace/build/src/third_party/rust/rayon-core/src/registry.rs:693)
==8353==    by 0x13F178C4: <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute+180 (registry.rs:853)
==8353==    by 0x14103DEB: rayon_core::registry::WorkerThread::wait_until_cold+523 (job.rs:59)
==8353==    by 0x14104ADC: std::sys_common::backtrace::__rust_begin_short_backtrace+1788 (registry.rs:693)
==8353==    by 0x1410436D: core::ops::function::FnOnce::call_once{{vtable-shim}}+125 (mod.rs:470)
==8353==    by 0x141A4EDD: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once+61 (boxed.rs:922)
==8353==    by 0x141A7287: std::sys::unix::thread::Thread::new::thread_start+135 (boxed.rs:922)
==8353==    by 0x4E3BB4F: start_thread+207 (pthread_create.c:304)
==8353==    by 0x5CD9FBC: clone+108 (clone.S:112)

Emilio, are you aware of a change from the last day or so that might be related? Nothing jumps out at me reading through autoland's history.

Flags: needinfo?(emilio)

Not really. That being said, we do intentionally leak that memory, see this, this, and this comment in particular for all the context.

The TLDR is that that memory is leaked intentionally until process shutdown, and as there's no guarantee to make the rayon threads shutdown synchronously in a way where TLS destructors have run before the refcount logging stuff comes in, so we leak the TLS allocations to make refcount logging deterministic.

We have suppressions for these here and a bit below.

It seems updating rust is adding a couple stack frames for inlined functions that makes those suppressions not apply. Should be trivial to fix I think. Sorry for the hassle.

Hope it helps.

Flags: needinfo?(emilio)
Pushed by cmanchester@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/21ec329aec73 Update builders to rustc 1.39 r=froydnj https://hg.mozilla.org/integration/autoland/rev/554bfbe4df7e Update bootstrap to upgrade to stable rust. r=froydnj https://hg.mozilla.org/integration/autoland/rev/c5b1b17f346a Update rust target detection for rustc 1.39. r=glandium https://hg.mozilla.org/integration/autoland/rev/5d59f2b2cbb2 Update valgrind supressions for rustc 1.39. r=emilio

== Change summary for alert #24307 (as of Sat, 07 Dec 2019 14:42:49 GMT) ==

Improvements:

11% perf_reftest_singletons tiny-traversal-singleton.html linux64-shippable-qr opt e10s stylo 807.83 -> 720.78
9% perf_reftest_singletons parent-basic-singleton.html linux64-shippable opt e10s stylo 87.01 -> 78.85
9% perf_reftest_singletons tiny-traversal-singleton.html linux64-shippable opt e10s stylo 754.57 -> 685.11
9% perf_reftest some-descendants-1.html linux64-shippable opt e10s stylo 6.24 -> 5.69
9% perf_reftest_singletons parent-basic-singleton.html linux64-shippable-qr opt e10s stylo 88.22 -> 80.62
8% perf_reftest_singletons coalesce-2.html linux64-shippable opt e10s stylo 133.84 -> 123.71
7% perf_reftest_singletons coalesce-2.html linux64-shippable-qr opt e10s stylo 140.91 -> 130.43
7% perf_reftest_singletons coalesce-2.html linux64-shippable-qr opt e10s stylo 140.27 -> 130.33
7% perf_reftest_singletons coalesce-1.html linux64-shippable-qr opt e10s stylo 173.19 -> 161.80
6% perf_reftest_singletons coalesce-1.html linux64-shippable opt e10s stylo 165.02 -> 155.10
5% perf_reftest_singletons bloom-basic.html linux64-shippable-qr opt e10s stylo 39.39 -> 37.35

For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=24307

also the first merge and backout generated alerts:

Merge:
== Change summary for alert #24218 (as of Tue, 03 Dec 2019 07:02:10 GMT) ==

Improvements:

11% perf_reftest some-descendants-1.html linux64-shippable opt e10s stylo 6.31 -> 5.61
8% perf_reftest_singletons parent-basic-singleton.html linux64-shippable-qr opt e10s stylo 88.61 -> 81.64
8% perf_reftest_singletons parent-basic-singleton.html linux64-shippable opt e10s stylo 86.49 -> 79.86
7% perf_reftest_singletons coalesce-2.html linux64-shippable opt e10s stylo 133.62 -> 124.57
6% perf_reftest_singletons coalesce-2.html linux64-shippable-qr opt e10s stylo 140.53 -> 132.03
6% perf_reftest_singletons coalesce-1.html linux64-shippable opt e10s stylo 165.22 -> 156.02
6% perf_reftest_singletons coalesce-1.html linux64-shippable-qr opt e10s stylo 172.79 -> 163.18

For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=24218

Backout:
== Change summary for alert #24239 (as of Tue, 03 Dec 2019 20:01:07 GMT) ==

Regressions:

13% perf_reftest_singletons tiny-traversal-singleton.html linux64-shippable-qr opt e10s stylo 714.05 -> 805.40
12% perf_reftest some-descendants-1.html linux64-shippable opt e10s stylo 5.56 -> 6.25
9% perf_reftest_singletons parent-basic-singleton.html linux64-shippable-qr opt e10s stylo 81.27 -> 88.93
7% perf_reftest_singletons coalesce-2.html linux64-shippable-qr opt e10s stylo 132.02 -> 141.32
6% perf_reftest_singletons coalesce-1.html linux64-shippable-qr opt e10s stylo 162.51 -> 172.81

For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=24239

(In reply to Florin Strugariu [:Bebe] (needinfo me) from comment #25)

== Change summary for alert #24307 (as of Sat, 07 Dec 2019 14:42:49 GMT) ==

Fascinating. This could potentially indicate that Rust 1.39 is handling PGO better than previous versions, since the reftest_singletons are part of PGO training as of bug 1596172.

Comment on attachment 9110131 [details]
Bug 1595218 - Update rust target detection for rustc 1.39.

ESR Uplift Approval Request

  • If this is not a sec:{high,crit} bug, please state case for ESR consideration: Build issues with more modern rust compiler.
  • User impact if declined:
  • Fix Landed on Version: 73
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): Only a configure check. This brings rust.configure close to being on par with what we have in central.

The other patches in this bug are not wanted on esr68.

  • String or UUID changes made by this patch:
Attachment #9110131 - Flags: approval-mozilla-esr68?

Comment on attachment 9110131 [details]
Bug 1595218 - Update rust target detection for rustc 1.39.

I'll clear the flag to avoid confusing status of this bug since only part of it is uplifted.

https://hg.mozilla.org/releases/mozilla-esr68/rev/22b959bfc4953156d396ca6c4c7fb79b193a72e6

Attachment #9110131 - Flags: approval-mozilla-esr68?
Keywords: perf-alert
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: