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

[DO NOT MERGE] bootstrap with -Znext-solver=globally #133502

Draft
wants to merge 10 commits into
base: master
Choose a base branch
from

Conversation

lcnr
Copy link
Contributor

@lcnr lcnr commented Nov 26, 2024

A revival of #124812.

Current status:

./x.py b --stage 2 passes 🎉

try builds succeed 🎉 🎉 🎉

commits

r? @ghost

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Nov 26, 2024
@rust-log-analyzer

This comment has been minimized.

@compiler-errors
Copy link
Member

@bors try

bors added a commit to rust-lang-ci/rust that referenced this pull request Nov 27, 2024
[DO NOT MERGE] bootstrap with `-Znext-solver=globally`

A revival of rust-lang#124812.

Current status, we're failing in:

- failing in `rustc_next_trait_solver` with 126 instances of the following error
```
error[E0311]: the parameter type `I` may not live long enough
    |
help: consider adding an explicit lifetime bound
   --> compiler/rustc_next_trait_solver/src/solve/trait_goals.rs:624:53
    |
624 ~     fn consider_structural_builtin_unsize_candidates<'a>(
625 ~         ecx: &mut EvalCtxt<'a, D>,
626 |         goal: Goal<I, Self>,
627 ~     ) -> Vec<Candidate<I>> where I: 'a {
```
- `itertools` hangs, we're already encountered this hang in our previous attempt due to large type sizes. I believe that it's simply caused by a missing cache somewhere, potentially in `wf.rs`, but other visitors may also be responsible. See rust-itertools/itertools#945 for more details

### commits

- rust-lang#133501
- rust-lang#133493
- 9456bfe and b21b116 reimplement candidate preference based on rust-lang#132325, not yet a separate PR
- c3ef9cd is a rebased version of rust-lang#125334, unsure whether I actually want to land this PR for now

r? `@ghost`
@bors
Copy link
Contributor

bors commented Nov 27, 2024

⌛ Trying commit f631ca8 with merge ca04381...

@compiler-errors
Copy link
Member

@rust-log-analyzer

This comment was marked as off-topic.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Nov 27, 2024

💔 Test failed - checks-actions

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Nov 27, 2024
@bors
Copy link
Contributor

bors commented Nov 27, 2024

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

@lqd
Copy link
Member

lqd commented Nov 27, 2024

Next failure is on color-print-proc-macro-0.3.6 while building cargo.

thesignal

pub fn repro() -> impl FnMut() {
    if true {
        || ()
    } else {
        || ()
    }
}

godbolt

@compiler-errors
Copy link
Member

@bors try

bors added a commit to rust-lang-ci/rust that referenced this pull request Nov 27, 2024
[DO NOT MERGE] bootstrap with `-Znext-solver=globally`

A revival of rust-lang#124812.

Current status:

`./x.py b --stage 2` passes 🎉

### commits

- rust-lang#133501
- rust-lang#133493
- 9456bfe and b21b116 reimplement candidate preference based on rust-lang#132325, not yet a separate PR
- c3ef9cd is a rebased version of rust-lang#125334, unsure whether I actually want to land this PR for now
- rust-lang#133517
* rust-lang#133518
* rust-lang#133519
* rust-lang#133520
* rust-lang#133521
* rust-lang#133524

r? `@ghost`
@bors
Copy link
Contributor

bors commented Nov 27, 2024

⌛ Trying commit 6210ed3 with merge ac5ccad...

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Nov 27, 2024

💔 Test failed - checks-actions

@compiler-errors
Copy link
Member

@bors try

bors added a commit to rust-lang-ci/rust that referenced this pull request Nov 27, 2024
[DO NOT MERGE] bootstrap with `-Znext-solver=globally`

A revival of rust-lang#124812.

Current status:

`./x.py b --stage 2` passes 🎉

### commits

- rust-lang#133501
- rust-lang#133493
- 9456bfe and b21b116 reimplement candidate preference based on rust-lang#132325, not yet a separate PR
- c3ef9cd is a rebased version of rust-lang#125334, unsure whether I actually want to land this PR for now
- rust-lang#133517
* rust-lang#133518
* rust-lang#133519
* rust-lang#133520
* rust-lang#133521
* rust-lang#133524

r? `@ghost`
@bors
Copy link
Contributor

bors commented Nov 27, 2024

⌛ Trying commit 8fa8f40 with merge 550ae0d...

@lqd
Copy link
Member

lqd commented Nov 27, 2024

I was reducing the new failure but you've already fixed it ^^

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Nov 27, 2024

💔 Test failed - checks-actions

@compiler-errors
Copy link
Member

@bors try

@bors
Copy link
Contributor

bors commented Nov 28, 2024

⌛ Trying commit 000f7bd with merge bccf3b7b458a76f118143edf3dfd56b763e76c39...

bors added a commit to rust-lang-ci/rust that referenced this pull request Nov 28, 2024
[DO NOT MERGE] bootstrap with `-Znext-solver=globally`

A revival of rust-lang#124812.

Current status:

`./x.py b --stage 2` passes 🎉

### commits

- rust-lang#133501
- rust-lang#133493
- 9456bfe and b21b116 reimplement candidate preference based on rust-lang#132325, not yet a separate PR
- c3ef9cd is a rebased version of rust-lang#125334, unsure whether I actually want to land this PR for now
- rust-lang#133517
* rust-lang#133518
* rust-lang#133519
* rust-lang#133520
* rust-lang#133521
* rust-lang#133524

r? `@ghost`
@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Contributor

bors commented Nov 28, 2024

☀️ Try build successful - checks-actions
Build commit: bccf3b7 (bccf3b7b458a76f118143edf3dfd56b763e76c39)

@compiler-errors
Copy link
Member

@rust-timer build bccf3b7

@rust-timer
Copy link
Collaborator

Queued bccf3b7 with parent 66adeaf, future comparison URL.
There is currently 1 preceding artifact in the queue.
It will probably take at least ~1.6 hours until the benchmark run finishes.

@lcnr
Copy link
Contributor Author

lcnr commented Nov 28, 2024

@lqd
Copy link
Member

lqd commented Nov 28, 2024

benchmarking bootstrap somehow didn't succeed on the perf collector 🤔 -- could be a timeout maybe.

@lqd
Copy link
Member

lqd commented Nov 28, 2024

results are actually incomplete, a benchmark fails in a way that is unexpected by the collector (measureme crashing that issue-46449's -Zself-profile data is invalid) and it's trying to re-run it non stop.

@rust-log-analyzer
Copy link
Collaborator

The job mingw-check-tidy failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)

COPY host-x86_64/mingw-check/validate-toolstate.sh /scripts/
COPY host-x86_64/mingw-check/validate-error-codes.sh /scripts/

# NOTE: intentionally uses python2 for x.py so we can test it still works.
# validate-toolstate only runs in our CI, so it's ok for it to only support python3.
ENV SCRIPT TIDY_PRINT_DIFF=1 python2.7 ../x.py test \
           --stage 0 src/tools/tidy tidyselftest --extra-checks=py:lint,cpp:fmt
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
#    pip-compile --allow-unsafe --generate-hashes reuse-requirements.in
---
#13 2.862 Building wheels for collected packages: reuse
#13 2.863   Building wheel for reuse (pyproject.toml): started
#13 3.114   Building wheel for reuse (pyproject.toml): finished with status 'done'
#13 3.115   Created wheel for reuse: filename=reuse-4.0.3-cp310-cp310-manylinux_2_35_x86_64.whl size=132720 sha256=026f3bb0f1aa8090b861fd0a0939cb1a782396d84c8aab7875096557d637a0f6
#13 3.115   Stored in directory: /tmp/pip-ephem-wheel-cache-75g9g79s/wheels/3d/8d/0a/e0fc6aba4494b28a967ab5eaf951c121d9c677958714e34532
#13 3.118 Installing collected packages: boolean-py, binaryornot, tomlkit, reuse, python-debian, markupsafe, license-expression, jinja2, chardet, attrs
#13 3.513 Successfully installed attrs-23.2.0 binaryornot-0.4.4 boolean-py-4.0 chardet-5.2.0 jinja2-3.1.4 license-expression-30.3.0 markupsafe-2.1.5 python-debian-0.1.49 reuse-4.0.3 tomlkit-0.13.0
#13 3.513 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
#13 4.064 Collecting virtualenv
#13 4.064 Collecting virtualenv
#13 4.139   Downloading virtualenv-20.28.0-py3-none-any.whl (4.3 MB)
#13 4.237      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3/4.3 MB 44.8 MB/s eta 0:00:00
#13 4.296 Collecting platformdirs<5,>=3.9.1
#13 4.308   Downloading platformdirs-4.3.6-py3-none-any.whl (18 kB)
#13 4.335 Collecting distlib<1,>=0.3.7
#13 4.355      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 469.0/469.0 KB 82.3 MB/s eta 0:00:00
#13 4.395 Collecting filelock<4,>=3.12.2
#13 4.407   Downloading filelock-3.16.1-py3-none-any.whl (16 kB)
#13 4.407   Downloading filelock-3.16.1-py3-none-any.whl (16 kB)
#13 4.488 Installing collected packages: distlib, platformdirs, filelock, virtualenv
#13 4.671 Successfully installed distlib-0.3.9 filelock-3.16.1 platformdirs-4.3.6 virtualenv-20.28.0
#13 DONE 4.8s

#14 [7/8] COPY host-x86_64/mingw-check/validate-toolstate.sh /scripts/
#14 DONE 0.0s
---
DirectMap4k:      323520 kB
DirectMap2M:     7016448 kB
DirectMap1G:    11534336 kB
##[endgroup]
Executing TIDY_PRINT_DIFF=1 python2.7 ../x.py test            --stage 0 src/tools/tidy tidyselftest --extra-checks=py:lint,cpp:fmt
+ TIDY_PRINT_DIFF=1 python2.7 ../x.py test --stage 0 src/tools/tidy tidyselftest --extra-checks=py:lint,cpp:fmt
    Finished `dev` profile [unoptimized] target(s) in 0.04s
##[endgroup]
WARN: currently no CI rustc builds have rustc debug assertions enabled. Please either set `rust.debug-assertions` to `false` if you want to use download CI rustc or set `rust.download-rustc` to `false`.
downloading https://static.rust-lang.org/dist/2024-10-16/rustfmt-nightly-x86_64-unknown-linux-gnu.tar.xz
---
fmt check
fmt: checked 5685 files
tidy check
tidy: Skipping binary file check, read-only filesystem
##[error]tidy error: /checkout/compiler/rustc_next_trait_solver/src/solve/assembly/mod.rs:728: TODO is used for tasks that should be done before merging a PR; If you want to leave a message in the codebase use FIXME
removing old virtual environment
creating virtual environment at '/checkout/obj/build/venv' using 'python3.10'
Requirement already satisfied: pip in ./build/venv/lib/python3.10/site-packages (24.3.1)
All checks passed!
checking C++ file formatting
some tidy checks failed
some tidy checks failed
Command has failed. Rerun with -v to see more details.
  local time: Thu Nov 28 09:45:24 UTC 2024
  network time: Thu, 28 Nov 2024 09:45:24 GMT
##[error]Process completed with exit code 1.
Post job cleanup.

@lcnr lcnr mentioned this pull request Nov 28, 2024
11 tasks
@Kobzol
Copy link
Contributor

Kobzol commented Nov 28, 2024

I had to remove the commit from the perf.RLO database, as it was causing issues in the collector, it was crashing.

@lcnr
Copy link
Contributor Author

lcnr commented Nov 28, 2024

results are actually incomplete, a benchmark fails in a way that is unexpected by the collector (measureme crashing that issue-46449's -Zself-profile data is invalid) and it's trying to re-run it non stop.

How can we figure out why that happened so that we can fix it?

@lqd
Copy link
Member

lqd commented Nov 28, 2024

I wanted to make a proper repro for y'all but I'm still working on fixing decodeme and the collector so this doesn't brick it in the future anymore.

If it can't wait, and you want to reproduce in rustc-perf: ./target/debug/collector bench_local +bccf3b7b458a76f118143edf3dfd56b763e76c39 --include issue-46449 --self-profile --scenarios IncrPatched --profiles Check will generate the invalid .mm_profdata that makes analyzeme crash.

As-is, the file will be hidden in a tmp folder, so the setup the above command does basically goes like this: cargo check on the benchmark with self-profiling turned on, then applying one (or all) of the patches in the same folder and cargo checking again (always with self-profiling) to reproduce the issue (hopefully).

@lqd
Copy link
Member

lqd commented Nov 28, 2024

I'll see if I can get an actual MCVE tomorrow, but in the meantime, it seems this incremental ICE is the root cause.

From the benchmark:

[package]
name = "issue-46449-byte-filling-slowing-down-sroa"
version = "0.1.0"

[dependencies]
futures = "=0.1.17"
#![allow(unexpected_cfgs)]

extern crate futures;

use futures::{Future, Poll};

const BUFFER_SIZE: usize = 1;

#[cfg(before)]
pub struct Error(::std::io::Error);

#[cfg(after)]
pub struct Error();

struct Dummy<T>(T);
impl<T> Future for Dummy<T> {
    type Item = T;
    type Error = Error;
    fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
        loop {}
    }
}

pub fn run() -> Box<dyn Future<Item = (), Error = Error>> {
    let c2s = Dummy([0u8; BUFFER_SIZE]).then(move |_| Ok(0));
    let s2c = Dummy(()).then(move |_| Ok(0));
    let fut = c2s.select(s2c)
        .and_then(move |_| Ok(()))
        .map_err(|(err, _)| err);
    Box::new(fut)
}
> cargo +bccf3b7b458a76f118143edf3dfd56b763e76c39 rustc -q -- --cfg before && cargo +bccf3b7b458a76f118143edf3dfd56b763e76c39 rustc -q -- --cfg after

thread 'rustc' panicked at compiler/rustc_middle/src/query/on_disk_cache.rs:729:21:
Failed to convert DefPathHash DefPathHash(Fingerprint(10053302304625752304, 298815228590218976))
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants