Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Add regression test for #105501 #106264

Merged
merged 1 commit into from
Dec 30, 2022

Conversation

Swatinem
Copy link
Contributor

@Swatinem Swatinem commented Dec 29, 2022

The test was minified from the published crate msf-ice:0.2.1 which failed in a crater run.

A faulty compiler was triggering a higher-ranked lifetime error:

could not prove [async block@...]: Send

The testcase has some complexity, as it has a simplified subset of futures::StreamExt in it, but the error is only being triggered by a few layers of nesting. For example removing the noop then call would have been enough to make the error go away.

@rustbot
Copy link
Collaborator

rustbot commented Dec 29, 2022

r? @petrochenkov

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

@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. labels Dec 29, 2022
@petrochenkov
Copy link
Contributor

Could you move this test from issues to the async-await subdirectory?
r=me after that, @rustbot author

@rustbot rustbot 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 Dec 29, 2022
The test was minified from the published `msf-ice:0.2.1` crate which failed in a crater run.

A faulty compiler was triggering a `higher-ranked lifetime error`:

> could not prove `[async block@...]: Send`
@Swatinem Swatinem force-pushed the higher-lifetime-regression branch from 1c66744 to 42e7df9 Compare December 30, 2022 07:53
@Swatinem
Copy link
Contributor Author

Rebased and moved the test

@rustbot ready

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

@bors r+

@bors
Copy link
Contributor

bors commented Dec 30, 2022

📌 Commit 42e7df9 has been approved by petrochenkov

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Dec 30, 2022
@bors
Copy link
Contributor

bors commented Dec 30, 2022

⌛ Testing commit 42e7df9 with merge f6cc345...

@bors
Copy link
Contributor

bors commented Dec 30, 2022

☀️ Test successful - checks-actions
Approved by: petrochenkov
Pushing f6cc345 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Dec 30, 2022
@bors bors merged commit f6cc345 into rust-lang:master Dec 30, 2022
@rustbot rustbot added this to the 1.68.0 milestone Dec 30, 2022
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (f6cc345): comparison URL.

Overall result: ❌ regressions - ACTION NEEDED

Next Steps: If you can justify the regressions found in this perf run, please indicate this with @rustbot label: +perf-regression-triaged along with sufficient written justification. If you cannot justify the regressions please open an issue or create a new PR that fixes the regressions, add a comment linking to the newly created issue or PR, and then add the perf-regression-triaged label to this PR.

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.3% [0.2%, 0.5%] 22
Regressions ❌
(secondary)
0.4% [0.2%, 0.7%] 23
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.3% [0.2%, 0.5%] 22

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
3.0% [2.3%, 3.8%] 6
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

@rustbot rustbot added the perf-regression Performance regression. label Dec 30, 2022
@lqd
Copy link
Member

lqd commented Dec 30, 2022

Of course, this is again unfortunate noise (which seems to have started appearing around #106210 (comment)).

@rustbot label: +perf-regression-triaged

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label Dec 30, 2022
@Swatinem Swatinem deleted the higher-lifetime-regression branch December 30, 2022 15:09
Swatinem added a commit to Swatinem/rust that referenced this pull request Feb 1, 2023
This changes from the stdlib supported `ResumeTy`, and converting that to a `&mut Context<'_>` to directly use `&mut Context<'_>` in lowering.

It pretty much reverts rust-lang#105977 and re-applies an updated version of rust-lang#105250.

The PR is currently failing as it depends on `-Zdrop-tracking-mir` becoming the default, so that the compiler does not falsly believe the context is being held across await points,which would make async blocks `!Send` and `!UnwindSafe`.
However it also still fails the testcase added in rust-lang#106264 for reasons I don’t understand.
Swatinem added a commit to Swatinem/rust that referenced this pull request Sep 24, 2023
Instead of using the stdlib supported `ResumeTy`, which is being converting to a `&mut Context<'_>` during the Generator MIR pass,
this will use `&mut Context<'_>` directly in HIR lowering.

It pretty much reverts rust-lang#105977 and re-applies an updated version of rust-lang#105250.

This still fails the testcase added in rust-lang#106264 however, for reasons I don’t understand.
Swatinem added a commit to Swatinem/rust that referenced this pull request Dec 28, 2023
Instead of using the stdlib supported `ResumeTy`, which is being converting to a `&mut Context<'_>` during the Generator MIR pass,
this will use `&mut Context<'_>` directly in HIR lowering.

It pretty much reverts rust-lang#105977 and re-applies an updated version of rust-lang#105250.

This still fails the testcase added in rust-lang#106264 however, for reasons I don’t understand.
Swatinem added a commit to Swatinem/rust that referenced this pull request Dec 28, 2023
Instead of using the stdlib supported `ResumeTy`, which is being converting to a `&mut Context<'_>` during the Generator MIR pass,
this will use `&mut Context<'_>` directly in HIR lowering.

It pretty much reverts rust-lang#105977 and re-applies an updated version of rust-lang#105250.

This still fails the testcase added in rust-lang#106264 however, for reasons I don’t understand.
Swatinem added a commit to Swatinem/rust that referenced this pull request Jan 6, 2024
Instead of using the stdlib supported `ResumeTy`, which is being converting to a `&mut Context<'_>` during the Generator MIR pass,
this will use `&mut Context<'_>` directly in HIR lowering.

It pretty much reverts rust-lang#105977 and re-applies an updated version of rust-lang#105250.

This still fails the testcase added in rust-lang#106264 however, for reasons I don’t understand.
Swatinem added a commit to Swatinem/rust that referenced this pull request Feb 17, 2024
Instead of using the stdlib supported `ResumeTy`, which is being converting to a `&mut Context<'_>` during the Generator MIR pass,
this will use `&mut Context<'_>` directly in HIR lowering.

It pretty much reverts rust-lang#105977 and re-applies an updated version of rust-lang#105250.

This still fails the testcase added in rust-lang#106264 however, for reasons I don’t understand.
Swatinem added a commit to Swatinem/rust that referenced this pull request May 12, 2024
Instead of using the stdlib supported `ResumeTy`, which is being converting to a `&mut Context<'_>` during the Generator MIR pass,
this will use `&mut Context<'_>` directly in HIR lowering.

It pretty much reverts rust-lang#105977 and re-applies an updated version of rust-lang#105250.

This still fails the testcase added in rust-lang#106264 however, for reasons I don’t understand.
Swatinem added a commit to Swatinem/rust that referenced this pull request Jul 30, 2024
Instead of using the stdlib supported `ResumeTy`, which is being converting to a `&mut Context<'_>` during the Generator MIR pass,
this will use `&mut Context<'_>` directly in HIR lowering.

It pretty much reverts rust-lang#105977 and re-applies an updated version of rust-lang#105250.

This still fails the testcase added in rust-lang#106264 however, for reasons I don’t understand.
Swatinem added a commit to Swatinem/rust that referenced this pull request Jan 21, 2025
Instead of using the stdlib supported `ResumeTy`, which is being converting to a `&mut Context<'_>` during the Generator MIR pass,
this will use `&mut Context<'_>` directly in HIR lowering.

It pretty much reverts rust-lang#105977 and re-applies an updated version of rust-lang#105250.

This still fails the testcase added in rust-lang#106264 however, for reasons I don’t understand.
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants