rust-analyzer
rust-analyzer copied to clipboard
Request `textDocument/*` failed
I always getting following language server error notifications for the rust-analyzer
.
Request textDocument/semanticTokens/range failed.
Request textDocument/inlayHint failed.
Request textDocument/semanticTokens/full failed.
The Output debug print is the following.
Panic context:
>
version: 0.3.1162-standalone (634cfe3d7 2022-08-07)
request: textDocument/codeAction CodeActionParams {
text_document: TextDocumentIdentifier {
uri: Url {
scheme: "file",
cannot_be_a_base: false,
username: "",
password: None,
host: None,
port: None,
path: "/Users/test/project/src/lib.rs",
query: None,
fragment: None,
},
},
range: Range {
start: Position {
line: 91,
character: 51,
},
end: Position {
line: 91,
character: 51,
},
},
context: CodeActionContext {
diagnostics: [],
only: None,
},
work_done_progress_params: WorkDoneProgressParams {
work_done_token: None,
},
partial_result_params: PartialResultParams {
partial_result_token: None,
},
}
thread 'Worker' panicked at 'overflow depth reached', /Users/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/chalk-recursive-0.83.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.
I use the lastest rust-analyzer
extension from VSCode.
I didn't installed the binary with homebrew.
What can I do to prevent that rust-analyzer
spamms that error notifications?
Has been happening constantly for maybe 2 weeks now? I even get it on other machines in every crate I work on.
It happens since I work with multiple crates.
There's already some known chalk bugs resulting in this, but we'll need some sample code that shows the problem.
These errors happen with all sorts of crates, not just chalk.
#12843 #10084 #12046
Notably it happens even without changing Cargo.toml, and persists after restarting the extension host.
It's a bug in the chalk crate, which we use for trait solving. It gets into an infinite loop. https://github.com/rust-lang/rust-analyzer/issues/12897 is one example. Code using the RustCrypto (aes
etc.) crates is another. The crash will happen every time, even if you restart the extension, since the types it's trying to solve are the same.
You can try reducing CHALK_OVERFLOW_DEPTH
or CHALK_SOLVER_MAX_SIZE
(they're environment variables, you can set them in rust-analyzer.server.extraEnv
), but that doesn't always help.
is it possible to demote these errors from "popup" to "log only"? They are pretty irritating and not user actionable anyway
I agree with above, and I would happily enable any kind of telemetry if it would aid with fixing these. They happen all the time for me.