-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Recent nightly started ICEing with "No counters provided the source_hash for used function" #98833
Comments
Last passing run was |
Minimized a reproducer.
Execution:
|
@rustbot label regression-untriaged |
Bisection says searched nightlies: from nightly-2022-06-29 to nightly-2022-07-03 bisected with cargo-bisect-rustc v0.6.1Host triple: x86_64-unknown-linux-gnu cargo bisect-rustc --start 2022-06-29 --regress ice -- build --release So, #91743 |
WG-prioritization assigning priority (Zulip discussion). @rustbot label -I-prioritize +P-critical |
…leywiser Fix unreachable coverage generation for inlined functions To generate a function coverage we need at least one coverage counter, so a coverage from unreachable blocks is retained only when some live counters remain. The previous implementation incorrectly retained unreachable coverage, because it didn't account for the fact that those live counters can belong to another function due to inlining. Fixes rust-lang#98833.
…leywiser Fix unreachable coverage generation for inlined functions To generate a function coverage we need at least one coverage counter, so a coverage from unreachable blocks is retained only when some live counters remain. The previous implementation incorrectly retained unreachable coverage, because it didn't account for the fact that those live counters can belong to another function due to inlining. Fixes rust-lang#98833.
@tmiasko Unfortunately while this fixes the minimal reproducer, it doesn't fix the full case. Would you prefer I file a new bug, or should this one be re-opened? To reproduce:
|
It's not very minimized, but slightly better.
|
Interesting, I had assumed based on the matching panic message that it'd have the same regressing commit. |
Remove reachable coverage without counters Remove reachable coverage without counters to maintain invariant that either there is no coverage at all or there is a live coverage counter left that provides the function source hash. The motivating example would be a following closure: ```rust let f = |x: bool| { debug_assert!(x); }; ``` Which, with span changes from rust-lang#93967, with disabled debug assertions, after the final CFG simplifications but before removal of dead blocks, gives rise to MIR: ```rust fn main::{closure#0}(_1: &[[email protected]:2:13: 2:22], _2: bool) -> () { debug x => _2; let mut _0: (); bb0: { Coverage::Expression(4294967295) = 1 - 2; return; } ... } ``` Which also makes the initial instrumentation quite suspect, although this pull request doesn't attempt to address that aspect directly. Fixes rust-lang#98833. r? `@wesleywiser` `@richkadel`
Happy to report that with the latest nightly we're back to green on nightly. Thanks much @tmiasko! |
Thanks @tmiasko the first fix was enough for Suricata :-) |
Thanks so much, pydantic-core has been pinned to |
…ust-lang/rust#98833" This reverts commit 3356288.
This can be seen here: https://github.com/pyca/cryptography/runs/7165695219?check_suite_focus=true
To reproduce:
The text was updated successfully, but these errors were encountered: