rust-analyzer: async_trait analyzing error: Request codeLens/resolve failed: overflow depth reached
rust-analyzer version: 5fae65dd2 2022-03-07 stable
os: macOS 12 aarch64
rustc version: rustc 1.59.0 (9d1b2106e 2022-02-23)
Code:

Error Screenshot:

Error log:
Panic context:
>
version: 5fae65dd2 2022-03-07 stable
request: codeLens/resolve CodeLens {
range: Range {
start: Position {
line: 187,
character: 13,
},
end: Position {
line: 187,
character: 19,
},
},
command: None,
data: Some(
Object({
"references": Object({
"textDocument": Object({
"uri": String(
"*********",
),
}),
"position": Object({
"line": Number(
187,
),
"character": Number(
13,
),
}),
}),
}),
),
}
thread '<unnamed>' panicked at 'overflow depth reached', /Users/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/chalk-recursive-0.76.0/src/fixed_point/stack.rs:51:13
stack backtrace:
0: std::panicking::begin_panic
1: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
2: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
3: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
4: chalk_recursive::solve::SolveIteration::solve_iteration
5: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
6: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
7: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
8: chalk_recursive::solve::SolveIteration::solve_iteration
9: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
10: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
11: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
12: chalk_recursive::solve::SolveIteration::solve_iteration
13: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
14: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
15: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
16: chalk_recursive::solve::SolveIteration::solve_iteration
17: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
18: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
19: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
20: chalk_recursive::solve::SolveIteration::solve_iteration
21: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
22: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
23: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
24: chalk_recursive::solve::SolveIteration::solve_iteration
25: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
26: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
27: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
28: chalk_recursive::solve::SolveIteration::solve_iteration
29: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
30: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
31: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
32: chalk_recursive::solve::SolveIteration::solve_iteration
33: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
34: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
35: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
36: chalk_recursive::solve::SolveIteration::solve_iteration
37: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
38: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
39: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
40: chalk_recursive::solve::SolveIteration::solve_iteration
41: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
42: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
43: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
44: chalk_recursive::solve::SolveIteration::solve_iteration
45: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
46: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
47: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
48: chalk_recursive::solve::SolveIteration::solve_iteration
49: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
50: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
51: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
52: chalk_recursive::solve::SolveIteration::solve_iteration
53: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
54: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
55: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
56: chalk_recursive::solve::SolveIteration::solve_iteration
57: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
58: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
59: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
60: chalk_recursive::solve::SolveIteration::solve_iteration
61: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
62: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
63: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
64: chalk_recursive::solve::SolveIteration::solve_iteration
65: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
66: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
67: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
68: chalk_recursive::solve::SolveIteration::solve_iteration
69: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
70: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
71: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
72: chalk_recursive::solve::SolveIteration::solve_iteration
73: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
74: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
75: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
76: chalk_recursive::solve::SolveIteration::solve_iteration
77: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
78: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
79: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
80: chalk_recursive::solve::SolveIteration::solve_iteration
81: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
82: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
83: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
84: chalk_recursive::solve::SolveIteration::solve_iteration
85: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
86: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
87: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
88: chalk_recursive::solve::SolveIteration::solve_iteration
89: chalk_recursive::fixed_point::RecursiveContext<K,V>::solve_goal
90: chalk_recursive::fulfill::Fulfill<I,Solver>::prove
91: chalk_recursive::fulfill::Fulfill<I,Solver>::solve
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
And for a POC, I wrote a simple code like this:

Mention the huge amount of references here.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 2
- Comments: 19 (12 by maintainers)
Commits related to this issue
- Auto merge of #12001 - Veykril:refs, r=Veykril fix: Do reference search on all downmapped tokens with the same kind only cc https://github.com/rust-lang/rust-analyzer/issues/11668 — committed to rust-lang/rust-analyzer by bors 2 years ago
- Auto merge of #12281 - lnicola:increase-overflow-depth, r=lnicola Increase defalt chalk overflow depth to match max solver size TBC: - #12279: ok above 480 - ~~#12182~~ - ~~#12095~~ - #11902: o... — committed to rust-lang/rust-analyzer by bors 2 years ago
- Auto merge of #12357 - Veykril:find-ref-macro, r=Veykril fix: When reference searching macro inputs, don't search everything that was downmapped Fixes https://github.com/rust-lang/rust-analyzer/issu... — committed to rust-lang/rust-analyzer by bors 2 years ago
No, we should probably be more resilient to macros doing this.
I think the original error is probably unrelated to this (or just triggered by a more-legitimate reference search for different symbol).
Why would we find any references to
crateat all though, considering it’s a keyword and not an identifier?