Skip to content
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

WIP: Allocator- and fallibility-polymorphic collections #60703

Closed
wants to merge 9 commits into from

Conversation

Ericson2314
Copy link
Contributor

@Ericson2314 Ericson2314 commented May 10, 2019

Reopened #52420. Cannot be merged until WG approves design, but good to keep open so still have CI.

This picks up where #58457 will leave off, adding allocator parameters to the other collections. It also adds and associated error type for allocation, so as to enable fallibility-polymorphic code and support the few impls and other functions which require "infallible" allocation.

When done, should convert all the collections for #42774

Unfortunately, as documented in #52396, I had to make an AllocHelper trait in order to get my default impl to work.

Like #58457 which this continues, this blocked on some decision about stability and the new type parameters. See #60703 (comment) for details.

@rust-highfive
Copy link
Collaborator

r? @cramertj

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label May 10, 2019
@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:17a8bd44:start=1557503377594146373,finish=1557503519271010477,duration=141676864104
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
$ export AWS_ACCESS_KEY_ID=AKIA46X5W6CZEJZ6XT55
---

[00:03:47] travis_fold:start:tidy
travis_time:start:tidy
tidy check
[00:03:48] tidy error: /checkout/src/liballoc/collections/linked_list.rs:1350: line longer than 100 chars
[00:03:48] tidy error: /checkout/src/liballoc/collections/vec_deque.rs:597: line longer than 100 chars
[00:03:48] tidy error: /checkout/src/liballoc/vec.rs:559: line longer than 100 chars
[00:03:48] tidy error: /checkout/src/liballoc/raw_vec.rs:386: line longer than 100 chars
[00:03:48] tidy error: /checkout/src/liballoc/raw_vec.rs:397: line longer than 100 chars
[00:03:48] tidy error: /checkout/src/liballoc/raw_vec.rs:621: line longer than 100 chars
[00:03:48] tidy error: /checkout/src/liballoc/raw_vec.rs:624: line longer than 100 chars
[00:03:48] tidy error: /checkout/src/liballoc/string.rs:995: line longer than 100 chars
[00:03:52] some tidy checks failed
[00:03:52] 
[00:03:52] 
[00:03:52] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:03:52] 
[00:03:52] 
[00:03:52] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:03:52] Build completed unsuccessfully in 0:01:07
[00:03:52] Build completed unsuccessfully in 0:01:07
[00:03:52] Makefile:67: recipe for target 'tidy' failed
[00:03:52] make: *** [tidy] Error 1
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:078cd32d
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Fri May 10 15:56:00 UTC 2019
---
travis_time:end:06975eb6:start=1557503761483950234,finish=1557503761488138239,duration=4188005
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:2fe89a44
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:27661260
travis_time:start:27661260
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:01b2e9aa
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@cramertj
Copy link
Member

r? @sfackler

@rust-highfive rust-highfive assigned sfackler and unassigned cramertj May 10, 2019
@lachlansneff
Copy link

Iterator is an example of a trait with default methods that return an associated type. Why does Alloc need a helper trait?

/// A hack so the default impl can condition on the associated type. This `Err`
/// type ought to just live in the `Alloc` trait.
#[unstable(feature = "allocator_api", issue = "32838")]
pub trait AllocHelper {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fairly certain this trait needn't exist. Since Alloc is still experimental, we can make breaking changes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #52396 this was the only way to make it type check without removing the default methods. Happy to get rid of it once bug is fixed.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't matter if it's a breaking change though.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need to have some default methods; not having that constrains the design a lot. It should be a simple bug to fix; this isn't the spooky specialization-breaking part of specialization.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I'm misunderstanding the issue. There are plenty of traits with associated types and default methods in the standard library. Iterator is an example. Don't use specialization, and it should be fine.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The issue is when the default method is only valid for certain associated types. You can't write that constraint today in a way that works.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we remove the {alloc|dealloc}_array and {alloc|dealloc}_one from the Alloc trait like this issue suggests, we don't need any fancy specialization or the helper trait.

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=749a844f3b19c589228ba9ef4286b233

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's true. I still want that bug fixed though! :D That fact that one can write Alloc<Err = !> means that AllocHelper should't need to be referenced (almost?) anywhere. We have a little runway because we need a compiler change for unstable type parameters anyway.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's still inelegant to have the helper trait, so I'd like to avoid it if possible.

@@ -659,7 +670,7 @@ pub unsafe trait GlobalAlloc {
/// Note that this list may get tweaked over time as clarifications are made in
/// the future.
#[unstable(feature = "allocator_api", issue = "32838")]
pub unsafe trait Alloc {
pub unsafe trait Alloc: AllocHelper {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto.

@@ -578,6 +579,6 @@ impl str {
/// ```
#[stable(feature = "str_box_extras", since = "1.20.0")]
#[inline]
pub unsafe fn from_boxed_utf8_unchecked(v: Box<[u8]>) -> Box<str> {
Box::from_raw(Box::into_raw(v) as *mut str)
pub unsafe fn from_boxed_utf8_unchecked<A: Alloc + AllocHelper>(v: Box<[u8], A>) -> Box<str, A> {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a breaking change, I'm pretty sure.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How come?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, I'm not sure. I feel like there might be edgecases where it's not backwards compatible.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an example of something similar where it's not backward compatible because type-inference isn't smart enough.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that's acceptable. It's basically impossible to do anything with a higher order function whose arguments and return type are not constrained by the type checker.


unsafe impl<A: Alloc> Alloc for AbortAdapter<A> {
unsafe fn alloc(&mut self, layout: Layout) -> Result<NonNull<u8>, Self::Err> {
self.0.alloc(layout).or_else(|_| handle_alloc_error(layout))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like we should handle this in a way that includes the actual error that occured. Maybe it'd be best to bound the Err associated type on Debug or Display?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, but I figure we can hash out what handle_alloc_error should take later?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

handle_alloc_error is stable, so it can't be changed. But yeah, this is less important for the moment.

/// The type of any errors thrown by the allocator, customarily
/// either `AllocErr`, for when error recovery is allowed, or `!`
/// to signify that all errors will result in .
type Err = AllocErr;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, why does it have a default error type?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional backwards compat with existing instances.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need backwards compatibility.

@@ -610,8 +670,10 @@ impl<T> LinkedList<T> {
/// assert_eq!(dl.front().unwrap(), &1);
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
pub fn push_front(&mut self, elt: T) {
self.push_front_node(box Node::new(elt));
pub fn push_front_alloc(&mut self, elt: T) -> Result<(), A::Err> {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change to a stable method? insta-stabilising a method?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Right the docs and annotations should stay with the push_front, which is now in a different impl.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:0cc71963:start=1557702134046511930,finish=1557702221614269354,duration=87567757424
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
$ export AWS_ACCESS_KEY_ID=AKIA46X5W6CZEJZ6XT55
---

[00:04:22] travis_fold:start:tidy
travis_time:start:tidy
tidy check
[00:04:23] tidy error: /checkout/src/liballoc/collections/linked_list.rs:1350: line longer than 100 chars
[00:04:23] tidy error: /checkout/src/liballoc/collections/vec_deque.rs:597: line longer than 100 chars
[00:04:23] tidy error: /checkout/src/liballoc/vec.rs:559: line longer than 100 chars
[00:04:23] tidy error: /checkout/src/liballoc/raw_vec.rs:386: line longer than 100 chars
[00:04:23] tidy error: /checkout/src/liballoc/raw_vec.rs:397: line longer than 100 chars
[00:04:23] tidy error: /checkout/src/liballoc/raw_vec.rs:621: line longer than 100 chars
[00:04:23] tidy error: /checkout/src/liballoc/raw_vec.rs:624: line longer than 100 chars
[00:04:23] tidy error: /checkout/src/liballoc/string.rs:995: line longer than 100 chars
[00:04:28] some tidy checks failed
[00:04:28] 
[00:04:28] 
[00:04:28] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:04:28] 
[00:04:28] 
[00:04:28] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:04:28] Build completed unsuccessfully in 0:01:14
[00:04:28] Build completed unsuccessfully in 0:01:14
[00:04:28] Makefile:67: recipe for target 'tidy' failed
[00:04:28] make: *** [tidy] Error 1
The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:0335d048
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
Sun May 12 23:08:18 UTC 2019
---
travis_time:end:154417da:start=1557702498843112278,finish=1557702498848127032,duration=5014754
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:3b125d52
$ ln -s . checkout && for CORE in obj/cores/core.*; do EXE=$(echo $CORE | sed 's|obj/cores/core\.[0-9]*\.!checkout!\(.*\)|\1|;y|!|/|'); if [ -f "$EXE" ]; then printf travis_fold":start:crashlog\n\033[31;1m%s\033[0m\n" "$CORE"; gdb --batch -q -c "$CORE" "$EXE" -iex 'set auto-load off' -iex 'dir src/' -iex 'set sysroot .' -ex bt -ex q; echo travis_fold":"end:crashlog; fi; done || true
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:0410c1e4
travis_time:start:0410c1e4
$ cat ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
cat: ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers: No such file or directory
travis_fold:end:after_failure.5
travis_fold:start:after_failure.6
travis_time:start:173498fd
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@SimonSapin SimonSapin added the S-blocked Status: Marked as blocked ❌ on something else such as an RFC or other implementation work. label May 13, 2019
@SimonSapin
Copy link
Contributor

Landing this is blocked on either:

@Ericson2314
Copy link
Contributor Author

@SimonSapin Indeed it is, amended OP to say as much and link to your post. I have no problem with that. You know my generally wanting to slam on the breaks with stabilization, and my own PR is no exception!

@phil-opp
Copy link
Contributor

phil-opp commented May 16, 2019

@Ericson2314 i tried to experiment a bit with this PR, but it didn't compile for me (see compile output below). Is this a known issue?

Compile Output
Updating only changed submodules
Submodules updated in 0.02 seconds
    Finished dev [unoptimized] target(s) in 0.26s
Building stage0 std artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
   Compiling alloc v0.0.0 (/home/philipp/Documents/rust/src/liballoc)
error: unused import: `stage0_phantom`==================>              ] 29/38
  --> src/liballoc/sync.rs:27:60
   |
27 | use crate::alloc::{Global, Alloc, Layout, box_free_worker, stage0_phantom};
   |                                                            ^^^^^^^^^^^^^^
   |
   = note: `-D unused-imports` implied by `-D warnings`

error: use of item 'core::mem::uninitialized' that will be deprecated in future version 2.0.0: use `mem::MaybeUninit::uninit` instead
   --> src/liballoc/boxed.rs:333:25
    |
333 |             let mut a = mem::uninitialized();
    |                         ^^^^^^^^^^^^^^^^^^
    |
    = note: `-D deprecated-in-future` implied by `-D warnings`

error: use of item 'core::mem::uninitialized' that will be deprecated in future version 2.0.0: use `mem::MaybeUninit::uninit` instead
   --> src/liballoc/sync.rs:302:29
    |
302 |             alloc: unsafe { mem::uninitialized() },
    |                             ^^^^^^^^^^^^^^^^^^

error: use of item 'core::mem::uninitialized' that will be deprecated in future version 2.0.0: use `mem::MaybeUninit::uninit` instead
   --> src/liballoc/rc.rs:319:29
    |
319 |             alloc: unsafe { mem::uninitialized() },
    |                             ^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> src/liballoc/alloc.rs:243:26
    |
243 |         stage0_unphantom(a).dealloc(NonNull::from(ptr).cast(), layout);
    |                          ^
    |                          |
    |                          expected struct `core::marker::PhantomData`, found mutable reference
    |                          help: consider dereferencing the borrow: `*a`
    |
    = note: expected type `core::marker::PhantomData<_>`
               found type `&mut core::marker::PhantomData<A>`

error[E0277]: the trait bound `A: core::default::Default` is not satisfied
   --> src/liballoc/boxed.rs:247:47
    |
247 |         Box::from_raw_in(f(Box::into_raw(b)), stage0_unphantom(a))
    |                                               ^^^^^^^^^^^^^^^^ the trait `core::default::Default` is not implemented for `A`
    |
    = help: consider adding a `where A: core::default::Default` bound
note: required by `alloc::stage0_unphantom`
   --> src/liballoc/alloc.rs:30:1
    |
30  | pub(crate) fn stage0_unphantom<A: Default>(_a: PhantomData<A>) -> A { A::default() }
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> src/liballoc/boxed.rs:338:18
    |
338 |         (unique, alloc)
    |                  ^^^^^ expected type parameter, found struct `core::marker::PhantomData`
    |
    = note: expected type `A`
               found type `core::marker::PhantomData<A>`

error[E0277]: the trait bound `core::marker::PhantomData<A>: core::alloc::AllocHelper` is not satisfied
   --> src/liballoc/boxed.rs:917:21
    |
917 |         let Ok(b) = RawVec::with_capacity_in(self.len(), self.1.clone());
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `core::alloc::AllocHelper` is not implemented for `core::marker::PhantomData<A>`

error[E0277]: the trait bound `core::marker::PhantomData<A>: core::alloc::AllocHelper` is not satisfied
   --> src/liballoc/boxed.rs:917:21
    |
917 |         let Ok(b) = RawVec::with_capacity_in(self.len(), self.1.clone());
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `core::alloc::AllocHelper` is not implemented for `core::marker::PhantomData<A>`
    |
    = note: required because of the requirements on the impl of `core::alloc::Alloc` for `core::marker::PhantomData<A>`
note: required by `raw_vec::RawVec::<T, A>::with_capacity_in`
   --> src/liballoc/raw_vec.rs:68:5
    |
68  |     pub fn with_capacity_in(cap: usize, a: A) -> Result<Self, A::Err> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: the trait bound `core::marker::PhantomData<A>: core::alloc::AllocHelper` is not satisfied
   --> src/liballoc/boxed.rs:919:23
    |
919 |         let mut new = BoxBuilder {
    |                       ^^^^^^^^^^ the trait `core::alloc::AllocHelper` is not implemented for `core::marker::PhantomData<A>`
    |
    = note: required because of the requirements on the impl of `core::alloc::Alloc` for `core::marker::PhantomData<A>`
note: required by `<boxed::Box<[T], A> as core::clone::Clone>::clone::BoxBuilder`
   --> src/liballoc/boxed.rs:938:9
    |
938 |         struct BoxBuilder<T, A: Alloc> {
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `ptr` found for type `raw_vec::RawVec<_, core::marker::PhantomData<A>>` in the current scope
   --> src/liballoc/boxed.rs:924:35
    |
924 |         let mut target = new.data.ptr();
    |                                   ^^^ private field, not a method
    | 
   ::: src/liballoc/raw_vec.rs:42:1
    |
42  | pub struct RawVec<T, A: Alloc = AbortAdapter<Global>> {
    | ----------------------------------------------------- method `ptr` not found for this
    |
    = note: the method `ptr` exists but the following trait bounds were not satisfied:
            `core::marker::PhantomData<A> : alloc::Stage0Alloc`

error[E0599]: no method named `into_box` found for type `<boxed::Box<[T], A> as core::clone::Clone>::clone::BoxBuilder<_, core::marker::PhantomData<A>>` in the current scope
   --> src/liballoc/boxed.rs:935:29
    |
935 |         return unsafe { new.into_box() };
    |                             ^^^^^^^^
...
938 |         struct BoxBuilder<T, A: Alloc> {
    |         ------------------------------ method `into_box` not found for this
    |
    = note: the method `into_box` exists but the following trait bounds were not satisfied:
            `core::marker::PhantomData<A> : alloc::Stage0Alloc`

error[E0277]: the trait bound `A: core::default::Default` is not satisfied
   --> src/liballoc/collections/linked_list.rs:675:30
    |
675 |         self.push_front_node(Box::new_in(Node::new(elt), alloc)?);
    |                              ^^^^^^^^^^^ the trait `core::default::Default` is not implemented for `A`
    |
    = help: consider adding a `where A: core::default::Default` bound
note: required by `boxed::Box::<T, A>::new_in`
   --> src/liballoc/boxed.rs:155:5
    |
155 |     pub fn new_in(x: T, a: A) -> Result<Box<T, A>, A::Err> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: the trait bound `A: core::default::Default` is not satisfied
   --> src/liballoc/collections/linked_list.rs:720:29
    |
720 |         self.push_back_node(Box::new_in(Node::new(elt), alloc)?);
    |                             ^^^^^^^^^^^ the trait `core::default::Default` is not implemented for `A`
    |
    = help: consider adding a `where A: core::default::Default` bound
note: required by `boxed::Box::<T, A>::new_in`
   --> src/liballoc/boxed.rs:155:5
    |
155 |     pub fn new_in(x: T, a: A) -> Result<Box<T, A>, A::Err> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: the trait bound `A: core::default::Default` is not satisfied
    --> src/liballoc/collections/linked_list.rs:1023:64
     |
1023 |                 let node = Some(NonNull::from(Box::into_unique(Box::new_in(Node {
     |                                                                ^^^^^^^^^^^ the trait `core::default::Default` is not implemented for `A`
     |
     = help: consider adding a `where A: core::default::Default` bound
note: required by `boxed::Box::<T, A>::new_in`
    --> src/liballoc/boxed.rs:155:5
     |
155  |     pub fn new_in(x: T, a: A) -> Result<Box<T, A>, A::Err> {
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: the trait bound `A: core::default::Default` is not satisfied
   --> src/liballoc/sync.rs:299:28
    |
299 |         let x: Box<_, A> = Box::new_in(ArcInner {
    |                            ^^^^^^^^^^^ the trait `core::default::Default` is not implemented for `A`
    |
    = help: consider adding a `where A: core::default::Default` bound
note: required by `boxed::Box::<T, A>::new_in`
   --> src/liballoc/boxed.rs:155:5
    |
155 |     pub fn new_in(x: T, a: A) -> Result<Box<T, A>, A::Err> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> src/liballoc/sync.rs:668:32
    |
668 |             box_free_worker(u, &mut a);
    |                                ^^^^^^ expected struct `core::marker::PhantomData`, found type parameter
    |
    = note: expected type `&mut core::marker::PhantomData<_>`
               found type `&mut A2`

error[E0308]: mismatched types
   --> src/liballoc/sync.rs:679:32
    |
679 |             box_free_worker(u, &mut (*arc.ptr.as_ptr()).alloc);
    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `core::marker::PhantomData`, found type parameter
    |
    = note: expected type `&mut core::marker::PhantomData<_>`
               found type `&mut A`

error[E0277]: the trait bound `A: core::default::Default` is not satisfied
   --> src/liballoc/rc.rs:316:28
    |
316 |         let x: Box<_, A> = Box::new_in(RcBox {
    |                            ^^^^^^^^^^^ the trait `core::default::Default` is not implemented for `A`
    |
    = help: consider adding a `where A: core::default::Default` bound
note: required by `boxed::Box::<T, A>::new_in`
   --> src/liballoc/boxed.rs:155:5
    |
155 |     pub fn new_in(x: T, a: A) -> Result<Box<T, A>, A::Err> {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> src/liballoc/rc.rs:768:32
    |
768 |             box_free_worker(u, &mut (*rc.ptr.as_ptr()).alloc);
    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `core::marker::PhantomData`, found type parameter
    |
    = note: expected type `&mut core::marker::PhantomData<_>`
               found type `&mut A`

error: aborting due to 20 previous errors

Some errors occurred: E0277, E0308, E0599.
For more information about an error, try `rustc --explain E0277`.
error: Could not compile `alloc`.

@Ericson2314
Copy link
Contributor Author

Ericson2314 commented May 16, 2019

@phil-opp Most of those yes. I just tried building by running cargo manually, which does work. I need to fix up all the #[cfg] for stage0 / stage1. (Though then again, when is the next release out after which those go away?)

@phil-opp
Copy link
Contributor

@Ericson2314 Thanks for clarifying!

@bors
Copy link
Contributor

bors commented May 21, 2019

☔ The latest upstream changes (presumably #60986) made this pull request unmergeable. Please resolve the merge conflicts.

}

#[unstable(feature = "allocator_api", issue = "32838")]
default unsafe impl<A: AllocHelper<Err = AllocErr>> Alloc for A {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to cause a "conflicting implementations of trait core::alloc::Alloc" error for allocator crates without #![feature(specialization)]. The full error is:

error[E0119]: conflicting implementations of trait `core::alloc::Alloc` for type `Heap`:
   --> /…/linked-list-allocator/src/lib.rs:136:1
    |
136 | unsafe impl Alloc for Heap {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: conflicting implementation in crate `core`:
            - impl<A> core::alloc::Alloc for A
              where <A as core::alloc::AllocHelper>::Err == core::alloc::AllocErr, A: core::alloc::AllocHelper, A: core::alloc::Alloc;

With the feature added to the crate, it compiles fine.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@phil-opp sorry to get back to you so late. Firstly, there is a proposal to remove the offending methods for which I need this AllocHelper business in the first place. If they aren't however, I'd hope we could use something lighter than specialization for this. They key property is if the choice if default method can be made without regard to the specific parameter, there is no parametric violation, and thus no interesting "specialization". Haskell has had https://ghc.gitlab.haskell.org/ghc/doc/users_guide/glasgow_exts.html#extension-DefaultSignatures along these lines with no global interactions for ages. We should add this limited form of default impls to Rust, and fix #52396 while we are at it.

This turns `Box<T>` into `Box<T, A = Global>`, with a `A: Alloc` bound
for impls.

Ideally, inherent methods like `Box::new` would be applied to
`Box<T, A: Alloc + Default>`, but as of now, that would be backwards
incompatible because it would require type annotations in places where
they currently aren't required.

`impl FromIterator` is not covered because it relies on `Vec`, which
would need allocator awareness.

`DispatchFromDyn` is left out or being generic over `A` because there
is no bound that would make it work currently. `FnBox` is left out
because it's related to `DispatchFromDyn`.
We will use this for fallibility polymorphism
@Ericson2314
Copy link
Contributor Author

@glandium rebased, fixing conflicts and removing the stage0 cfg, and so I did the same. Took the time to test this more thoroughly so actually aiming to pass CI now 🚀 🚀 🚀.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:004fdb3b:start=1560298572959709429,finish=1560298667196973502,duration=94237264073
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
$ export AWS_ACCESS_KEY_ID=AKIA46X5W6CZEJZ6XT55
---

[00:17:06] travis_fold:start:tidy
travis_time:start:tidy
tidy check
[00:17:07] tidy error: /checkout/src/liballoc/collections/linked_list.rs:1354: line longer than 100 chars
[00:17:07] tidy error: /checkout/src/liballoc/collections/vec_deque.rs:597: line longer than 100 chars
[00:17:07] tidy error: /checkout/src/liballoc/vec.rs:559: line longer than 100 chars
[00:17:07] tidy error: /checkout/src/liballoc/raw_vec.rs:400: line longer than 100 chars
[00:17:09] tidy error: /checkout/src/liballoc/boxed.rs:339: malformed stability attribute: missing `feature` key
[00:17:11] some tidy checks failed
[00:17:11] 
[00:17:11] 
[00:17:11] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor" "--quiet"
[00:17:11] 
[00:17:11] 
[00:17:11] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
[00:17:11] Build completed unsuccessfully in 0:01:13

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:00b0b6b0:start=1560301035931174978,finish=1560301123624139339,duration=87692964361
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#pull-requests-and-security-restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
$ export GCP_CACHE_BUCKET=rust-lang-ci-cache
$ export AWS_ACCESS_KEY_ID=AKIA46X5W6CZEJZ6XT55
---
[00:30:07] Assembling stage1 compiler (x86_64-unknown-linux-gnu)
[00:30:07] travis_fold:start:stage1-std
travis_time:start:stage1-std
Building stage1 std artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
[00:30:07] error: process didn't exit successfully: `/checkout/obj/build/bootstrap/debug/rustc -vV` (signal: 6, SIGABRT: process abort signal)
[00:30:07] --- stderr
[00:30:07] *** Error in `/checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustc': free(): invalid pointer: 0x00007fa62c989b20 ***
[00:30:07] ======= Backtrace: =========
[00:30:07] /lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fa62c63c7e5]
[00:30:07] /lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7fa62c64537a]
[00:30:07] /lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7fa62c64953c]
[00:30:07] /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/../lib/libstd-c844844bc956e13f.so(rust_metadata_std_417ad1778c4b3fb7d86aee3513cf2902+0x4f66e)[0x7fa62c9de66e]
[00:30:07] /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/../lib/libstd-c844844bc956e13f.so(rust_metadata_std_417ad1778c4b3fb7d86aee3513cf2902+0x55809)[0x7fa62c9e4809]
[00:30:07] /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/../lib/libstd-c844844bc956e13f.so(_ZN3std6thread6Thread3new17h0991791a49ff12feE+0x1a4)[0x7fa62c9e6794]
[00:30:07] /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/../lib/libstd-c844844bc956e13f.so(_ZN3std2rt19lang_start_internal17ha50d02de22603038E+0x314)[0x7fa62ca063a4]
[00:30:07] /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustc(+0x962)[0x56037e7b5962]
[00:30:07] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fa62c5e5830]
[00:30:07] /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustc(+0x829)[0x56037e7b5829]
[00:30:07] ======= Memory map: ========
[00:30:07] 56037e7b5000-56037e7b6000 r-xp 00000000 08:01 2321720                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustc
[00:30:07] 56037e9b5000-56037e9b6000 r--p 00000000 08:01 2321720                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustc
[00:30:07] 56037e9b6000-56037e9b7000 rw-p 00001000 08:01 2321720                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/bin/rustc
[00:30:07] 56037ed71000-56037ed92000 rw-p 00000000 00:00 0                          [heap]
[00:30:07] 7fa61c000000-7fa61c021000 rw-p 00000000 00:00 0 
[00:30:07] 7fa61c021000-7fa620000000 ---p 00000000 00:00 0 
[00:30:07] 7fa623eda000-7fa623f05000 r-xp 00000000 08:01 2081447                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libterm-42a3bfb8cb8e322f.so
[00:30:07] 7fa623f05000-7fa624105000 ---p 0002b000 08:01 2081447                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libterm-42a3bfb8cb8e322f.so
[00:30:07] 7fa624105000-7fa62410b000 r--p 0002b000 08:01 2081447                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libterm-42a3bfb8cb8e322f.so
[00:30:07] 7fa62410b000-7fa62410c000 rw-p 00031000 08:01 2081447                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libterm-42a3bfb8cb8e322f.so
[00:30:07] 7fa62410c000-7fa624214000 r-xp 00000000 08:01 1292136                    /lib/x86_64-linux-gnu/libm-2.23.so
[00:30:07] 7fa624214000-7fa624413000 ---p 00108000 08:01 1292136                    /lib/x86_64-linux-gnu/libm-2.23.so
[00:30:07] 7fa624413000-7fa624414000 r--p 00107000 08:01 1292136                    /lib/x86_64-linux-gnu/libm-2.23.so
[00:30:07] 7fa624414000-7fa624415000 rw-p 00108000 08:01 1292136                    /lib/x86_64-linux-gnu/libm-2.23.so
[00:30:07] 7fa624415000-7fa624418000 r-xp 00000000 08:01 2321411                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_fs_util-5f0122864e858157.so
[00:30:07] 7fa624418000-7fa624617000 ---p 00003000 08:01 2321411                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_fs_util-5f0122864e858157.so
[00:30:07] 7fa624617000-7fa624618000 r--p 00002000 08:01 2321411                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_fs_util-5f0122864e858157.so
[00:30:07] 7fa624618000-7fa624619000 rw-p 00003000 08:01 2321411                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_fs_util-5f0122864e858157.so
[00:30:07] 7fa624619000-7fa624620000 r-xp 00000000 08:01 2321391                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libfmt_macros-a1c850595bc2a1b5.so
[00:30:07] 7fa624620000-7fa624820000 ---p 00007000 08:01 2321391                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libfmt_macros-a1c850595bc2a1b5.so
[00:30:07] 7fa624820000-7fa624821000 r--p 00007000 08:01 2321391                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libfmt_macros-a1c850595bc2a1b5.so
[00:30:07] 7fa624821000-7fa624822000 rw-p 00008000 08:01 2321391                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libfmt_macros-a1c850595bc2a1b5.so
[00:30:07] 7fa624822000-7fa62499d000 r-xp 00000000 08:01 2321703                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax_ext-4a7deb09fe5690b5.so
[00:30:07] 7fa62499d000-7fa624b9d000 ---p 0017b000 08:01 2321703                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax_ext-4a7deb09fe5690b5.so
[00:30:07] 7fa624b9d000-7fa624ba3000 r--p 0017b000 08:01 2321703                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax_ext-4a7deb09fe5690b5.so
[00:30:07] 7fa624ba3000-7fa624ba4000 rw-p 00181000 08:01 2321703                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax_ext-4a7deb09fe5690b5.so
[00:30:07] 7fa624ba4000-7fa624c22000 r-xp 00000000 08:01 2321711                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_allocator-aa18244e2dd8bdec.so
[00:30:07] 7fa624c22000-7fa624e21000 ---p 0007e000 08:01 2321711                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_allocator-aa18244e2dd8bdec.so
[00:30:07] 7fa624e21000-7fa624e23000 r--p 0007d000 08:01 2321711                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_allocator-aa18244e2dd8bdec.so
[00:30:07] 7fa624e23000-7fa624e24000 rw-p 0007f000 08:01 2321711                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_allocator-aa18244e2dd8bdec.so
[00:30:07] 7fa624e24000-7fa624f4f000 r-xp 00000000 08:01 2321713                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_incremental-81e652614e78dfc5.so
[00:30:07] 7fa624f4f000-7fa62514f000 ---p 0012b000 08:01 2321713                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_incremental-81e652614e78dfc5.so
[00:30:07] 7fa62514f000-7fa625157000 r--p 0012b000 08:01 2321713                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_incremental-81e652614e78dfc5.so
[00:30:07] 7fa625157000-7fa625158000 rw-p 00133000 08:01 2321713                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_incremental-81e652614e78dfc5.so
[00:30:07] 7fa625158000-7fa62535c000 r-xp 00000000 08:01 2321736                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_codegen_ssa-1ea33004e3d61cd6.so
[00:30:07] 7fa62535c000-7fa62555c000 ---p 00204000 08:01 2321736                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_codegen_ssa-1ea33004e3d61cd6.so
[00:30:07] 7fa62555c000-7fa625568000 r--p 00204000 08:01 2321736                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_codegen_ssa-1ea33004e3d61cd6.so
[00:30:07] 7fa625568000-7fa625569000 rw-p 00210000 08:01 2321736                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_codegen_ssa-1ea33004e3d61cd6.so
[00:30:07] 7fa625569000-7fa625694000 r-xp 00000000 08:01 2321744                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_passes-f55b0c388399c648.so
[00:30:07] 7fa625694000-7fa625893000 ---p 0012b000 08:01 2321744                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_passes-f55b0c388399c648.so
[00:30:07] 7fa625893000-7fa625899000 r--p 0012a000 08:01 2321744                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_passes-f55b0c388399c648.so
[00:30:07] 7fa625899000-7fa62589a000 rw-p 00130000 08:01 2321744                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_passes-f55b0c388399c648.so
[00:30:07] 7fa62589a000-7fa625900000 r-xp 00000000 08:01 2321740                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_plugin-c290d89822ea1ad8.so
[00:30:07] 7fa625900000-7fa625aff000 ---p 00066000 08:01 2321740                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_plugin-c290d89822ea1ad8.so
[00:30:07] 7fa625aff000-7fa625b02000 r--p 00065000 08:01 2321740                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_plugin-c290d89822ea1ad8.so
[00:30:07] 7fa625b02000-7fa625b03000 rw-p 00068000 08:01 2321740                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_plugin-c290d89822ea1ad8.so
[00:30:07] 7fa625b03000-7fa62607c000 r-xp 00000000 08:01 2321716                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_typeck-4983be871d2727e4.so
[00:30:07] 7fa62607c000-7fa62627b000 ---p 00579000 08:01 2321716                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_typeck-4983be871d2727e4.so
[00:30:07] 7fa62627b000-7fa626297000 r--p 00578000 08:01 2321716                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_typeck-4983be871d2727e4.so
[00:30:07] 7fa626297000-7fa626298000 rw-p 00594000 08:01 2321716                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_typeck-4983be871d2727e4.so
[00:30:07] 7fa626298000-7fa6263cd000 r-xp 00000000 08:01 2321734                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_privacy-7cc3bcaa39b354c5.so
[00:30:07] 7fa6263cd000-7fa6265cd000 ---p 00135000 08:01 2321734                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_privacy-7cc3bcaa39b354c5.so
[00:30:07] 7fa6265cd000-7fa6265d1000 r--p 00135000 08:01 2321734                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_privacy-7cc3bcaa39b354c5.so
[00:30:07] 7fa6265d1000-7fa6265d2000 rw-p 00139000 08:01 2321734                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_privacy-7cc3bcaa39b354c5.so
[00:30:07] 7fa6265d2000-7fa62675f000 r-xp 00000000 08:01 2321738                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_resolve-08a9e1c52eb01e95.so
[00:30:07] 7fa62675f000-7fa62695e000 ---p 0018d000 08:01 2321738                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_resolve-08a9e1c52eb01e95.so
[00:30:07] 7fa62695e000-7fa62696a000 r--p 0018c000 08:01 2321738                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_resolve-08a9e1c52eb01e95.so
[00:30:07] 7fa62696a000-7fa62696b000 rw-p 00198000 08:01 2321738                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_resolve-08a9e1c52eb01e95.so
[00:30:07] 7fa62696b000-7fa626b7d000 r-xp 00000000 08:01 2321732                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_traits-14f127a5e7933602.so
[00:30:07] 7fa626b7d000-7fa626d7c000 ---p 00212000 08:01 2321732                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_traits-14f127a5e7933602.so
[00:30:07] 7fa626d7c000-7fa626d87000 r--p 00211000 08:01 2321732                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_traits-14f127a5e7933602.so
[00:30:07] 7fa626d87000-7fa626d88000 rw-p 0021c000 08:01 2321732                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_traits-14f127a5e7933602.so
[00:30:07] 7fa626d88000-7fa626ed6000 r-xp 00000000 08:01 2321718                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_lint-0417aecf75953604.so
[00:30:07] 7fa626ed6000-7fa6270d6000 ---p 0014e000 08:01 2321718                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_lint-0417aecf75953604.so
[00:30:07] 7fa6270d6000-7fa6270e2000 r--p 0014e000 08:01 2321718                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_lint-0417aecf75953604.so
[00:30:07] 7fa6270e2000-7fa6270e3000 rw-p 0015a000 08:01 2321718                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_lint-0417aecf75953604.so
[00:30:07] 7fa6270e3000-7fa6270ea000 r-xp 00000000 08:01 1292178                    /lib/x86_64-linux-gnu/librt-2.23.so
[00:30:07] 7fa6270ea000-7fa6272e9000 ---p 00007000 08:01 1292178                    /lib/x86_64-linux-gnu/librt-2.23.so
[00:30:07] 7fa6272e9000-7fa6272ea000 r--p 00006000 08:01 1292178                    /lib/x86_64-linux-gnu/librt-2.23.so
[00:30:07] 7fa6272ea000-7fa6272eb000 rw-p 00007000 08:01 1292178                    /lib/x86_64-linux-gnu/librt-2.23.so
[00:30:07] 7fa6272eb000-7fa6272ee000 r-xp 00000000 08:01 1292117                    /lib/x86_64-linux-gnu/libdl-2.23.so
[00:30:07] 7fa6272ee000-7fa6274ed000 ---p 00003000 08:01 1292117                    /lib/x86_64-linux-gnu/libdl-2.23.so
[00:30:07] 7fa6274ed000-7fa6274ee000 r--p 00002000 08:01 1292117                    /lib/x86_64-linux-gnu/libdl-2.23.so
[00:30:07] 7fa6274ee000-7fa6274ef000 rw-p 00003000 08:01 1292117                    /lib/x86_64-linux-gnu/libdl-2.23.so
[00:30:07] 7fa6274ef000-7fa627505000 r-xp 00000000 08:01 1292125                    /lib/x86_64-linux-gnu/libgcc_s.so.1
[00:30:07] 7fa627505000-7fa627704000 ---p 00016000 08:01 1292125                    /lib/x86_64-linux-gnu/libgcc_s.so.1
[00:30:07] 7fa627704000-7fa627705000 rw-p 00015000 08:01 1292125                    /lib/x86_64-linux-gnu/libgcc_s.so.1
[00:30:07] 7fa627705000-7fa62771d000 r-xp 00000000 08:01 1292172                    /lib/x86_64-linux-gnu/libpthread-2.23.so
[00:30:07] 7fa62771d000-7fa62791c000 ---p 00018000 08:01 1292172                    /lib/x86_64-linux-gnu/libpthread-2.23.so
[00:30:07] 7fa62791c000-7fa62791d000 r--p 00017000 08:01 1292172                    /lib/x86_64-linux-gnu/libpthread-2.23.so
[00:30:07] 7fa62791d000-7fa62791e000 rw-p 00018000 08:01 1292172                    /lib/x86_64-linux-gnu/libpthread-2.23.so
[00:30:07] 7fa62791e000-7fa627922000 rw-p 00000000 00:00 0 
[00:30:07] 7fa627922000-7fa627955000 r-xp 00000000 08:01 2321584                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libserialize-8259a4fbdb6377df.so
[00:30:07] 7fa627955000-7fa627b54000 ---p 00033000 08:01 2321584                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libserialize-8259a4fbdb6377df.so
[00:30:07] 7fa627b54000-7fa627b57000 r--p 00032000 08:01 2321584                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libserialize-8259a4fbdb6377df.so
[00:30:07] 7fa627b57000-7fa627b58000 rw-p 00035000 08:01 2321584                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libserialize-8259a4fbdb6377df.so
[00:30:07] 7fa627b58000-7fa627b9c000 r-xp 00000000 08:01 2321462                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_cratesio_shim-7a3fa46122ece1d2.so
[00:30:07] 7fa627b9c000-7fa627d9b000 ---p 00044000 08:01 2321462                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_cratesio_shim-7a3fa46122ece1d2.so
[00:30:07] 7fa627d9b000-7fa627d9d000 r--p 00043000 08:01 2321462                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_cratesio_shim-7a3fa46122ece1d2.so
[00:30:07] 7fa627d9d000-7fa627d9e000 rw-p 00045000 08:01 2321462                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_cratesio_shim-7a3fa46122ece1d2.so
[00:30:07] 7fa627d9e000-7fa627da4000 r-xp 00000000 08:01 2321396                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libgraphviz-5802bba1e3dd27f2.so
[00:30:07] 7fa627da4000-7fa627fa4000 ---p 00006000 08:01 2321396                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libgraphviz-5802bba1e3dd27f2.so
[00:30:07] 7fa627fa4000-7fa627fa5000 r--p 00006000 08:01 2321396                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libgraphviz-5802bba1e3dd27f2.so
[00:30:07] 7fa627fa5000-7fa627fa6000 rw-p 00007000 08:01 2321396                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libgraphviz-5802bba1e3dd27f2.so
[00:30:07] 7fa627fa6000-7fa627fcf000 r-xp 00000000 08:01 2321687                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_data_structures-4d186a5a2a9b2d12.so
[00:30:07] 7fa627fcf000-7fa6281cf000 ---p 00029000 08:01 2321687                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_data_structures-4d186a5a2a9b2d12.so
[00:30:07] 7fa6281cf000-7fa6281d2000 r--p 00029000 08:01 2321687                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_data_structures-4d186a5a2a9b2d12.so
[00:30:07] 7fa6281d2000-7fa6281d3000 rw-p 0002c000 08:01 2321687                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_data_structures-4d186a5a2a9b2d12.so
[00:30:07] 7fa6281d3000-7fa6281d5000 r-xp 00000000 08:01 2321686                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libarena-59b6aa170dd18238.so
[00:30:07] 7fa6281d5000-7fa6283d5000 ---p 00002000 08:01 2321686                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libarena-59b6aa170dd18238.so
[00:30:07] 7fa6283d5000-7fa6283d6000 r--p 00002000 08:01 2321686                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libarena-59b6aa170dd18238.so
[00:30:07] 7fa6283d6000-7fa6283d7000 rw-p 00003000 08:01 2321686                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libarena-59b6aa170dd18238.so
[00:30:07] 7fa6283d7000-7fa628412000 r-xp 00000000 08:01 2321692                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax_pos-70ac6e9befe6e999.so
[00:30:07] 7fa628412000-7fa628612000 ---p 0003b000 08:01 2321692                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax_pos-70ac6e9befe6e999.so
[00:30:07] 7fa628612000-7fa628618000 r--p 0003b000 08:01 2321692                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax_pos-70ac6e9befe6e999.so
[00:30:07] 7fa628618000-7fa628619000 rw-p 00041000 08:01 2321692                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax_pos-70ac6e9befe6e999.so
[00:30:07] 7fa628619000-7fa6286a2000 r-xp 00000000 08:01 2321697                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_errors-5632f2539e9ae150.so
[00:30:07] 7fa6286a2000-7fa6288a2000 ---p 00089000 08:01 2321697                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_errors-5632f2539e9ae150.so
[00:30:07] 7fa6288a2000-7fa6288a9000 r--p 00089000 08:01 2321697                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_errors-5632f2539e9ae150.so
[00:30:07] 7fa6288a9000-7fa6288aa000 rw-p 00090000 08:01 2321697                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_errors-5632f2539e9ae150.so
[00:30:07] 7fa6288aa000-7fa628999000 r-xp 00000000 08:01 2321695                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_target-e2397e11a8e1e1e0.so
[00:30:07] 7fa628999000-7fa628b98000 ---p 000ef000 08:01 2321695                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_target-e2397e11a8e1e1e0.so
[00:30:07] 7fa628b98000-7fa628b9c000 r--p 000ee000 08:01 2321695                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_target-e2397e11a8e1e1e0.so
[00:30:07] 7fa628b9c000-7fa628b9d000 rw-p 000f2000 08:01 2321695                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_target-e2397e11a8e1e1e0.so
[00:30:07] 7fa628b9d000-7fa628f0e000 r-xp 00000000 08:01 2321700                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax-b63c0d6d31f30b86.so
[00:30:07] 7fa628f0e000-7fa62910d000 ---p 00371000 08:01 2321700                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax-b63c0d6d31f30b86.so
[00:30:07] 7fa62910d000-7fa62912b000 r--p 00370000 08:01 2321700                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax-b63c0d6d31f30b86.so
[00:30:07] 7fa62912b000-7fa62912c000 rw-p 0038e000 08:01 2321700                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libsyntax-b63c0d6d31f30b86.so
[00:30:07] 7fa62912c000-7fa629184000 r-xp 00000000 08:01 2081451                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libtest-8612e47523425cd2.so
[00:30:07] 7fa629184000-7fa629384000 ---p 00058000 08:01 2081451                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libtest-8612e47523425cd2.so
[00:30:07] 7fa629384000-7fa629389000 r--p 00058000 08:01 2081451                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libtest-8612e47523425cd2.so
[00:30:07] 7fa629389000-7fa62938a000 rw-p 0005d000 08:01 2081451                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libtest-8612e47523425cd2.so
[00:30:07] 7fa62938a000-7fa62a3a9000 r-xp 00000000 08:01 2321705                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc-c3b86f1aefb9449e.so
[00:30:07] 7fa62a3a9000-7fa62a5a9000 ---p 0101f000 08:01 2321705                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc-c3b86f1aefb9449e.so
[00:30:07] 7fa62a5a9000-7fa62a5f0000 r--p 0101f000 08:01 2321705                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc-c3b86f1aefb9449e.so
[00:30:07] 7fa62a5f0000-7fa62a5f1000 rw-p 01066000 08:01 2321705                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc-c3b86f1aefb9449e.so
[00:30:07] 7fa62a5f1000-7fa62a9a0000 r-xp 00000000 08:01 2321719                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_metadata-cdae7847e75e1e2e.so
[00:30:07] 7fa62a9a0000-7fa62ab9f000 ---p 003af000 08:01 2321719                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_metadata-cdae7847e75e1e2e.so
[00:30:07] 7fa62ab9f000-7fa62abab000 r--p 003ae000 08:01 2321719                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_metadata-cdae7847e75e1e2e.so
[00:30:07] 7fa62abab000-7fa62abac000 rw-p 003ba000 08:01 2321719                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_metadata-cdae7847e75e1e2e.so
[00:30:07] 7fa62abac000-7fa62acfa000 r-xp 00000000 08:01 2321731                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_codegen_utils-4f0bb63db5f17f16.so
[00:30:07] 7fa62acfa000-7fa62aef9000 ---p 0014e000 08:01 2321731                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_codegen_utils-4f0bb63db5f17f16.so
[00:30:07] 7fa62aef9000-7fa62af00000 r--p 0014d000 08:01 2321731                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_codegen_utils-4f0bb63db5f17f16.so
[00:30:07] 7fa62af00000-7fa62af01000 rw-p 00154000 08:01 2321731                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_codegen_utils-4f0bb63db5f17f16.so
[00:30:07] 7fa62af01000-7fa62b0be000 r-xp 00000000 08:01 2321742                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_save_analysis-c90426a27b6dc38b.so
[00:30:07] 7fa62b0be000-7fa62b2bd000 ---p 001bd000 08:01 2321742                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_save_analysis-c90426a27b6dc38b.so
[00:30:07] 7fa62b2bd000-7fa62b2c8000 r--p 001bc000 08:01 2321742                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_save_analysis-c90426a27b6dc38b.so
[00:30:07] 7fa62b2c8000-7fa62b2c9000 rw-p 001c7000 08:01 2321742                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_save_analysis-c90426a27b6dc38b.so
[00:30:07] 7fa62b2c9000-7fa62bbd4000 r-xp 00000000 08:01 2321729                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_mir-de4a50c08ad258b8.so
[00:30:07] 7fa62bbd4000-7fa62bdd3000 ---p 0090b000 08:01 2321729                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_mir-de4a50c08ad258b8.so
[00:30:07] 7fa62bdd3000-7fa62be07000 r--p 0090a000 08:01 2321729                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_mir-de4a50c08ad258b8.so
[00:30:07] 7fa62be07000-7fa62be08000 rw-p 0093e000 08:01 2321729                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_mir-de4a50c08ad258b8.so
[00:30:07] 7fa62be08000-7fa62bef6000 r-xp 00000000 08:01 2321730                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_borrowck-92e1cdf71ea580e5.so
[00:30:07] 7fa62bef6000-7fa62c0f6000 ---p 000ee000 08:01 2321730                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_borrowck-92e1cdf71ea580e5.so
[00:30:07] 7fa62c0f6000-7fa62c0fe000 r--p 000ee000 08:01 2321730                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_borrowck-92e1cdf71ea580e5.so
[00:30:07] 7fa62c0fe000-7fa62c0ff000 rw-p 000f6000 08:01 2321730                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_borrowck-92e1cdf71ea580e5.so
[00:30:07] 7fa62c0ff000-7fa62c3ba000 r-xp 00000000 08:01 2321739                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_interface-632a879f82581358.so
[00:30:07] 7fa62c3ba000-7fa62c5b9000 ---p 002bb000 08:01 2321739                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_interface-632a879f82581358.so
[00:30:07] 7fa62c5b9000-7fa62c5c4000 r--p 002ba000 08:01 2321739                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_interface-632a879f82581358.so
[00:30:07] 7fa62c5c4000-7fa62c5c5000 rw-p 002c5000 08:01 2321739                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_interface-632a879f82581358.so
[00:30:07] 7fa62c5c5000-7fa62c785000 r-xp 00000000 08:01 1292104                    /lib/x86_64-linux-gnu/libc-2.23.so
[00:30:07] 7fa62c785000-7fa62c985000 ---p 001c0000 08:01 1292104                    /lib/x86_64-linux-gnu/libc-2.23.so
[00:30:07] 7fa62c985000-7fa62c989000 r--p 001c0000 08:01 1292104                    /lib/x86_64-linux-gnu/libc-2.23.so
[00:30:07] 7fa62c989000-7fa62c98b000 rw-p 001c4000 08:01 1292104                    /lib/x86_64-linux-gnu/libc-2.23.so
[00:30:07] 7fa62c98b000-7fa62c98f000 rw-p 00000000 00:00 0 
[00:30:07] 7fa62c98f000-7fa62ca8a000 r-xp 00000000 08:01 1816845                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libstd-c844844bc956e13f.so
[00:30:07] 7fa62ca8a000-7fa62cc89000 ---p 000fb000 08:01 1816845                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libstd-c844844bc956e13f.so
[00:30:07] 7fa62cc89000-7fa62cc98000 r--p 000fa000 08:01 1816845                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libstd-c844844bc956e13f.so
[00:30:07] 7fa62cc98000-7fa62cc99000 rw-p 00109000 08:01 1816845                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/libstd-c844844bc956e13f.so
[00:30:07] 7fa62cc99000-7fa62ce2c000 r-xp 00000000 08:01 2321743                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-2539f3b09b1cdd91.so
[00:30:07] 7fa62ce2c000-7fa62d02c000 ---p 00193000 08:01 2321743                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-2539f3b09b1cdd91.so
[00:30:07] 7fa62d02c000-7fa62d038000 r--p 00193000 08:01 2321743                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-2539f3b09b1cdd91.so
[00:30:07] 7fa62d038000-7fa62d039000 rw-p 0019f000 08:01 2321743                    /checkout/obj/build/x86_64-unknown-linux-gnu/stage1/lib/librustc_driver-2539f3b09b1cdd91.so
[00:30:07] 7fa62d039000-7fa62d05f000 r-xp 00000000 08:01 1292084                    /lib/x86_64-linux-gnu/ld-2.23.so
[00:30:07] 7fa62d241000-7fa62d258000 rw-p 00000000 00:00 0 
[00:30:07] 7fa62d25a000-7fa62d25e000 rw-p 00000000 00:00 0 
[00:30:07] 7fa62d25e000-7fa62d25f000 r--p 00025000 08:01 1292084                    /lib/x86_64-linux-gnu/ld-2.23.so
[00:30:07] 7fa62d25f000-7fa62d260000 rw-p 00026000 08:01 1292084                    /lib/x86_64-linux-gnu/ld-2.23.so
[00:30:07] 7fa62d260000-7fa62d261000 rw-p 00000000 00:00 0 
[00:30:07] 7ffc662e4000-7ffc66305000 rw-p 00000000 00:00 0                          [stack]
[00:30:07] 7ffc6633d000-7ffc66340000 r--p 00000000 00:00 0                          [vvar]
[00:30:07] 7ffc66340000-7ffc66342000 r-xp 00000000 00:00 0                          [vdso]
[00:30:07] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
[00:30:07] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "build" "--target" "x86_64-unknown-linux-gnu" "-j" "4" "--release" "--locked" "--color" "always" "--features" "panic-unwind backtrace compiler-builtins-c" "--manifest-path" "/checkout/src/libstd/Cargo.toml" "--message-format" "json"
[00:30:07] expected success, got: exit code: 101
[00:30:07] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
[00:30:07] Build completed unsuccessfully in 0:23:25

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@bors
Copy link
Contributor

bors commented Jun 14, 2019

☔ The latest upstream changes (presumably #61421) made this pull request unmergeable. Please resolve the merge conflicts.

@Dylan-DPC-zz Dylan-DPC-zz removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 1, 2019
@hdhoang
Copy link
Contributor

hdhoang commented Nov 7, 2019

Closing for being blocked on WG decision, as set in description.

@hdhoang hdhoang closed this Nov 7, 2019
@hdhoang hdhoang added S-blocked-closed and removed S-blocked Status: Marked as blocked ❌ on something else such as an RFC or other implementation work. labels Nov 7, 2019
@Ericson2314
Copy link
Contributor Author

@hdhoang would it be possible to keep this open but marked blocked so I can get CI feedback rebasing it on top of #65083?

@hdhoang hdhoang added S-blocked Status: Marked as blocked ❌ on something else such as an RFC or other implementation work. and removed S-blocked-closed labels Nov 9, 2019
@hdhoang
Copy link
Contributor

hdhoang commented Nov 9, 2019

Done, thanks for thefeedback. Please add a note to the description too so that triagers can skip this.

@hdhoang hdhoang reopened this Nov 9, 2019
@Ericson2314
Copy link
Contributor Author

Thanks!

@Dylan-DPC-zz
Copy link

Closing this. Thanks for contributing

@Ericson2314
Copy link
Contributor Author

Yeah it's fine now as the current wg design has evolved a bit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-blocked Status: Marked as blocked ❌ on something else such as an RFC or other implementation work.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet