-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Exponential slowdown in catching an overflow
error.
#91949
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
Comments
Possibly related to #89195? |
Bisected to #85868, cc @Aaron1011 bisected with cargo-bisect-rustc v0.6.1searched nightlies: from nightly-2021-06-01 to nightly-2021-12-08 regressed nightly: nightly-2021-09-03 searched commit range: https://github.com/rust-lang/rust/compare/50171c310cd15e1b2d3723766ce64e2e4d6696fc...371f3cd regressed commit: https://github.com/rust-lang/rust/commit/371f3cd3fe523d0b398ed1db1620667c53ba7d02Host triple: x86_64-unknown-linux-gnu cargo-bisect-rustc -t 3 --start 2021-06-01 --script ./test.sh test.sh: #!/bin/bash
cargo build
exit 0 @rustbot label -E-needs-bisection |
That PR seems incremental-compilation related. This leaves the question of whether the regression also happens without incremental compilation turned on, and whether or not it happens at the same point. |
This is almost certainly the same issue as #89195 then. |
Assigning priority as discussed in the Zulip thread of the Prioritization Working Group. @rustbot label -I-prioritize +P-high |
Seems to have fixed the problem, indeed. @rustbot label E-needs-test. |
Rollup of 5 pull requests Successful merges: - rust-lang#97087 (Clarify slice and Vec iteration order) - rust-lang#97254 (Remove feature: `crate` visibility modifier) - rust-lang#97271 (Add regression test for rust-lang#91949) - rust-lang#97294 (std::time : fix variable name in the doc) - rust-lang#97303 (Fix some typos in arg checking algorithm) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Uh oh!
There was an error while loading. Please reload this page.
This code is not expected to compile successfully:
This can't compile successfully because
recurse<T>
callsrecurse<Map<IteratorOfWrapped<(), T>, [closure@<source>:22:51: 22:58]>>
recursively, which then callsrecurse<Map<IteratorOfWrapped<(), Map<IteratorOfWrapped<(), T>, [closure@<source>:22:51: 22:58]>>, [closure@<source>:22:51: 22:58]>>
, and so on...However up to stable 1.55, the code failed to compile quickly with the default recursion limit. On the compiler explorer, you can see it even handling
#![recursion_limit = "800"]
without timeout. However, go to 1.56 and it no longer reaches a compilation error in time with#![recursion_limit = "30"]
. Still just as slow on nightly (rustc 1.59.0-nightly (6bda5b331 2021-12-12)
).@rustbot label: regression-from-stable-to-stable, perf-regression, I-compiletime, T-compiler, E-needs-bisection
Comes from: https://users.rust-lang.org/t/compiler-hanging/68804
Rough estimate on my machine: In the area of
recursion_limit
being20
-30
, the time more-than doubles for each increase of the recursion limit by2
or3
, so it really is exponential AFAICT.The text was updated successfully, but these errors were encountered: