Skip to content
This repository has been archived by the owner on Dec 29, 2022. It is now read-only.

rls-preview 1.31.6 (daa138c 2018-11-20) eats CPU after trying to display docs of dns_parser::Packet #1168

Closed
vi opened this issue Dec 6, 2018 · 10 comments · Fixed by #1170
Closed

Comments

@vi
Copy link

vi commented Dec 6, 2018

  • Started from vscode
  • Linux x86_64
  • At least partially works (vscode shows errors, but does not shows type tooltips)
  • Two threads keeping CPU core busy, 80%-90% each;
  • strace -cf shows 100% of futex syscall
  • Suspending one busy thread with strace -cp 15925,^Z makes the other busy thread go 100% CPU. Resuming the thread restores 90%/90% behaviour
  • Restarting vscode makes it sane again (and it also starts showing types of vars). But after enough time (or maybe after suspending and resuming the system) it gets into loop again.
  • Deliberately making short suspends-to-ram, freezing vscode (and RLS) in freezer cgroup, suspending RLS with strace does not trigger the bug.
  • There likely was similar behaviour in some previous version (not specific to 1.31.6)

gdb backtraces. Offending tasks are 15924 and 15925:

Thread 7 (Thread 0x398457fb700 (LWP 15925)):
#0  0x000003984c5ddd68 in core::iter::iterator::Iterator::eq::hc2cedccfbc82ddce () at /rustc/f1e2fa8f0469aac1ea69dd5b6164e1d198d57934/src/libcore/iter/iterator.rs:2431
#1  0x000003984c5f57d4 in _$LT$std..path..Path$u20$as$u20$core..cmp..PartialEq$GT$::eq::hc7dc1d81e3b6e448 () at libstd/path.rs:2537
#2  0x000002dbce33dc46 in _$LT$std..collections..hash..map..HashMap$LT$K$C$$u20$V$C$$u20$S$GT$$GT$::contains_key::h2bfd8deeb635d066 ()
#3  0x000002dbce2579b8 in _$LT$rls_vfs..Vfs$LT$U$GT$$GT$::load_line::h2f64d772d89ed3bd ()
#4  0x000002dbce23b0bd in rls::actions::hover::def_docs::h13b114159e6e6575 ()
#5  0x000002dbce244115 in rls::actions::hover::tooltip::h69272304854f8ddc ()
#6  0x000002dbce2ffeff in rls::actions::requests::_$LT$impl$u20$rls..server..dispatch..RequestAction$u20$for$u20$languageserver_types..request..HoverRequest$GT$::handle::ha79ec4e5da6d3f37 ()
#7  0x000002dbce3870f8 in std::panicking::try::do_call::hb9197d3b30db31f4 ()
#8  0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#9  0x000002dbce24e30a in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h7b2340e6162a2836 ()
#10 0x000002dbce385449 in std::panicking::try::do_call::h1dc67713ef8096c2 ()
#11 0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#12 0x000002dbce47a04c in _$LT$rayon_core..job..HeapJob$LT$BODY$GT$$u20$as$u20$rayon_core..job..Job$GT$::execute::hc3dcc58709f81d21 ()
#13 0x000002dbce65e252 in rayon_core::registry::WorkerThread::wait_until_cold::h2f55f04110d90c50 ()
#14 0x000002dbce65e7ac in rayon_core::registry::main_loop::h06824fc0f9168779 ()
#15 0x000002dbce65ee9c in std::panicking::try::do_call::ha75319634d549e93 ()
#16 0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#17 0x000002dbce6616a0 in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::h43ab17919d4fa067 ()
#18 0x000003984c60eb9e in _$LT$alloc..boxed..Box$LT$$LP$dyn$u20$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$RP$$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h52d5504f9cb0c28e () at /rustc/f1e2fa8f0469aac1ea69dd5b6164e1d198d57934/src/liballoc/boxed.rs:683
#19 std::sys_common::thread::start_thread::h81bc49633d84e83c () at libstd/sys_common/thread.rs:24
#20 std::sys::unix::thread::Thread::new::thread_start::h67a7fa39818a2df2 () at libstd/sys/unix/thread.rs:90
#21 0x000003984c381494 in start_thread (arg=0x398457fb700) at pthread_create.c:333
#22 0x000003984baa0acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 6 (Thread 0x398459fc700 (LWP 15924)):
#0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x000003984c383b95 in __GI___pthread_mutex_lock (mutex=0x39847a14180) at ../nptl/pthread_mutex_lock.c:80
#2  0x000002dbce257957 in _$LT$rls_vfs..Vfs$LT$U$GT$$GT$::load_line::h2f64d772d89ed3bd ()
#3  0x000002dbce23b0bd in rls::actions::hover::def_docs::h13b114159e6e6575 ()
#4  0x000002dbce244115 in rls::actions::hover::tooltip::h69272304854f8ddc ()
#5  0x000002dbce2ffeff in rls::actions::requests::_$LT$impl$u20$rls..server..dispatch..RequestAction$u20$for$u20$languageserver_types..request..HoverRequest$GT$::handle::ha79ec4e5da6d3f37 ()
#6  0x000002dbce3870f8 in std::panicking::try::do_call::hb9197d3b30db31f4 ()
#7  0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#8  0x000002dbce24e30a in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h7b2340e6162a2836 ()
#9  0x000002dbce385449 in std::panicking::try::do_call::h1dc67713ef8096c2 ()
#10 0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#11 0x000002dbce47a04c in _$LT$rayon_core..job..HeapJob$LT$BODY$GT$$u20$as$u20$rayon_core..job..Job$GT$::execute::hc3dcc58709f81d21 ()
#12 0x000002dbce65e252 in rayon_core::registry::WorkerThread::wait_until_cold::h2f55f04110d90c50 ()
#13 0x000002dbce65e7ac in rayon_core::registry::main_loop::h06824fc0f9168779 ()
#14 0x000002dbce65ee9c in std::panicking::try::do_call::ha75319634d549e93 ()
#15 0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#16 0x000002dbce6616a0 in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::h43ab17919d4fa067 ()
#17 0x000003984c60eb9e in _$LT$alloc..boxed..Box$LT$$LP$dyn$u20$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$RP$$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h52d5504f9cb0c28e () at /rustc/f1e2fa8f0469aac1ea69dd5b6164e1d198d57934/src/liballoc/boxed.rs:683
#18 std::sys_common::thread::start_thread::h81bc49633d84e83c () at libstd/sys_common/thread.rs:24
#19 std::sys::unix::thread::Thread::new::thread_start::h67a7fa39818a2df2 () at libstd/sys/unix/thread.rs:90
#20 0x000003984c381494 in start_thread (arg=0x398459fc700) at pthread_create.c:333
#21 0x000003984baa0acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 5 (Thread 0x39845bfd700 (LWP 15923)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x000002dbce660618 in rayon_core::sleep::Sleep::sleep::h2ea60f5311023292 ()
#2  0x000002dbce65e2b6 in rayon_core::registry::WorkerThread::wait_until_cold::h2f55f04110d90c50 ()
#3  0x000002dbce65e7ac in rayon_core::registry::main_loop::h06824fc0f9168779 ()
#4  0x000002dbce65ee9c in std::panicking::try::do_call::ha75319634d549e93 ()
#5  0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#6  0x000002dbce6616a0 in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::h43ab17919d4fa067 ()
#7  0x000003984c60eb9e in _$LT$alloc..boxed..Box$LT$$LP$dyn$u20$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$RP$$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h52d5504f9cb0c28e () at /rustc/f1e2fa8f0469aac1ea69dd5b6164e1d198d57934/src/liballoc/boxed.rs:683
#8  std::sys_common::thread::start_thread::h81bc49633d84e83c () at libstd/sys_common/thread.rs:24
#9  std::sys::unix::thread::Thread::new::thread_start::h67a7fa39818a2df2 () at libstd/sys/unix/thread.rs:90
#10 0x000003984c381494 in start_thread (arg=0x39845bfd700) at pthread_create.c:333
#11 0x000003984baa0acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 4 (Thread 0x39845dfe700 (LWP 15922)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x000002dbce660618 in rayon_core::sleep::Sleep::sleep::h2ea60f5311023292 ()
#2  0x000002dbce65e2b6 in rayon_core::registry::WorkerThread::wait_until_cold::h2f55f04110d90c50 ()
#3  0x000002dbce65e7ac in rayon_core::registry::main_loop::h06824fc0f9168779 ()
#4  0x000002dbce65ee9c in std::panicking::try::do_call::ha75319634d549e93 ()
#5  0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#6  0x000002dbce6616a0 in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::h43ab17919d4fa067 ()
#7  0x000003984c60eb9e in _$LT$alloc..boxed..Box$LT$$LP$dyn$u20$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$RP$$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h52d5504f9cb0c28e () at /rustc/f1e2fa8f0469aac1ea69dd5b6164e1d198d57934/src/liballoc/boxed.rs:683
#8  std::sys_common::thread::start_thread::h81bc49633d84e83c () at libstd/sys_common/thread.rs:24
#9  std::sys::unix::thread::Thread::new::thread_start::h67a7fa39818a2df2 () at libstd/sys/unix/thread.rs:90
#10 0x000003984c381494 in start_thread (arg=0x39845dfe700) at pthread_create.c:333
#11 0x000003984baa0acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 3 (Thread 0x39846dff700 (LWP 15910)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x000003984c5e1443 in std::sys::unix::condvar::Condvar::wait::h958f4c885c9e5fc9 () at libstd/sys/unix/condvar.rs:80
#2  std::sys_common::condvar::Condvar::wait::hbc4b5ebd0fa6fc5b () at libstd/sys_common/condvar.rs:51
#3  std::sync::condvar::Condvar::wait::h163cdebbfb1e053c () at libstd/sync/condvar.rs:214
#4  std::thread::park::h25fc68b3ff1d634e () at libstd/thread/mod.rs:885
#5  0x000002dbce2fed28 in rls::actions::post_build::AnalysisQueue::run_worker_thread::h85a2aa6e9a05d588 ()
#6  0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#7  0x000002dbce26f71c in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::h55b25bd3d891a558 ()
#8  0x000003984c60eb9e in _$LT$alloc..boxed..Box$LT$$LP$dyn$u20$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$RP$$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h52d5504f9cb0c28e () at /rustc/f1e2fa8f0469aac1ea69dd5b6164e1d198d57934/src/liballoc/boxed.rs:683
#9  std::sys_common::thread::start_thread::h81bc49633d84e83c () at libstd/sys_common/thread.rs:24
#10 std::sys::unix::thread::Thread::new::thread_start::h67a7fa39818a2df2 () at libstd/sys/unix/thread.rs:90
#11 0x000003984c381494 in start_thread (arg=0x39846dff700) at pthread_create.c:333
#12 0x000003984baa0acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 2 (Thread 0x398475ff700 (LWP 15909)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x000003984c5e1443 in std::sys::unix::condvar::Condvar::wait::h958f4c885c9e5fc9 () at libstd/sys/unix/condvar.rs:80
#2  std::sys_common::condvar::Condvar::wait::hbc4b5ebd0fa6fc5b () at libstd/sys_common/condvar.rs:51
#3  std::sync::condvar::Condvar::wait::h163cdebbfb1e053c () at libstd/sync/condvar.rs:214
#4  std::thread::park::h25fc68b3ff1d634e () at libstd/thread/mod.rs:885
#5  0x000003984c5f71c2 in std::sync::mpsc::blocking::WaitToken::wait::h02ece181b2afd3cc () at libstd/sync/mpsc/blocking.rs:81
#6  0x000002dbce2a3248 in _$LT$std..sync..mpsc..stream..Packet$LT$T$GT$$GT$::recv::hb3f460c47785a246 ()
#7  0x000002dbce28faac in _$LT$std..sync..mpsc..Receiver$LT$T$GT$$GT$::recv::h55ca0a1927f3225f ()
#8  0x000002dbce460b2b in std::sys_common::backtrace::__rust_begin_short_backtrace::h3d6dd6c3fe9d5c56 ()
#9  0x000002dbce38731c in std::panicking::try::do_call::hfdf302870ca7e601 ()
#10 0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#11 0x000002dbce26fa90 in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::h785cc80c1bc9ac5a ()
#12 0x000003984c60eb9e in _$LT$alloc..boxed..Box$LT$$LP$dyn$u20$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$RP$$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h52d5504f9cb0c28e () at /rustc/f1e2fa8f0469aac1ea69dd5b6164e1d198d57934/src/liballoc/boxed.rs:683
#13 std::sys_common::thread::start_thread::h81bc49633d84e83c () at libstd/sys_common/thread.rs:24
#14 std::sys::unix::thread::Thread::new::thread_start::h67a7fa39818a2df2 () at libstd/sys/unix/thread.rs:90
#15 0x000003984c381494 in start_thread (arg=0x398475ff700) at pthread_create.c:333
#16 0x000003984baa0acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 1 (Thread 0x3984fe1e500 (LWP 15904)):
#0  0x000003984c38a20d in read () at ../sysdeps/unix/syscall-template.S:84
#1  0x000003984c5e71da in std::sys::unix::fd::FileDesc::read::h0e525f5ff4c8dbdd () at libstd/sys/unix/fd.rs:58
#2  std::sys::unix::stdio::Stdin::read::h3687b6c479fb0ec1 () at libstd/sys/unix/stdio.rs:24
#3  _$LT$std..io..stdio..StdinRaw$u20$as$u20$std..io..Read$GT$::read::hcefedc5cfe4799d1 () at libstd/io/stdio.rs:77
#4  _$LT$std..io..stdio..Maybe$LT$R$GT$$u20$as$u20$std..io..Read$GT$::read::hf51925d77fde14b2 () at libstd/io/stdio.rs:117
#5  _$LT$std..io..buffered..BufReader$LT$R$GT$$u20$as$u20$std..io..BufRead$GT$::fill_buf::h651928408272b17c () at libstd/io/buffered.rs:263
#6  0x000003984c5e9730 in _$LT$std..io..stdio..StdinLock$LT$$u27$a$GT$$u20$as$u20$std..io..BufRead$GT$::fill_buf::hf1fbb3b2b1c1315c () at libstd/io/stdio.rs:322
#7  0x000002dbce4619a1 in std::io::append_to_string::hf379efbf3d52044b ()
#8  0x000002dbce3a7208 in _$LT$rls..server..io..StdioMsgReader$u20$as$u20$rls..server..io..MessageReader$GT$::read_message::hf97431c1f948e350 ()
#9  0x000002dbce2cae96 in rls::server::run_server::h317de4c9c266c7fd ()
#10 0x000002dbce31d80b in rls::main_inner::h71b4e763df559d48 ()
#11 0x000002dbce31d3c6 in rls::main::ha5dbf170c2f87676 ()
#12 0x000002dbce461d83 in std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h9a69c7dae1a05548 ()
#13 0x000003984c5fe713 in std::rt::lang_start_internal::_$u7b$$u7b$closure$u7d$$u7d$::hb2df683d76b6042c () at libstd/rt.rs:59
#14 std::panicking::try::do_call::h704d683257f21b11 () at libstd/panicking.rs:310
#15 0x000003984c61c04a in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#16 0x000003984c5ff1a4 in std::panicking::try::h4c398df1e7e480f7 () at libstd/panicking.rs:289
#17 std::panic::catch_unwind::ha04160cccfef810e () at libstd/panic.rs:398
#18 std::rt::lang_start_internal::hb07e8289ccfeb1cc () at libstd/rt.rs:58
#19 0x000002dbce327225 in main ()
@alexheretic
Copy link
Member

Those are hover/tooltip tasks. Can you reproduce it on a public repo, hovering on something?

@aloucks maybe getting stuck in extract_docs?

rls/src/actions/hover.rs

Lines 83 to 229 in cd79447

pub fn extract_docs(
vfs: &Vfs,
file: &Path,
row_start: Row<ZeroIndexed>,
) -> Result<Vec<String>, vfs::Error> {
let up = row_start.0 > 0;
debug!(
"extract_docs: row_start = {:?}, up = {:?}, file = {:?}",
row_start, up, file
);
let mut docs: Vec<String> = Vec::new();
let mut row = if up {
Row::new_zero_indexed(row_start.0.saturating_sub(1))
} else {
Row::new_zero_indexed(row_start.0)
};
let mut in_meta = false;
let mut hit_top = false;
loop {
let line = vfs.load_line(file, row)?;
let next_row = if up {
Row::new_zero_indexed(row.0.saturating_sub(1))
} else {
Row::new_zero_indexed(row.0.saturating_add(1))
};
if row == next_row {
hit_top = true;
} else {
row = next_row;
}
let line = line.trim();
let attr_start = line.starts_with("#[") || line.starts_with("#![");
if attr_start && line.ends_with(']') && !hit_top {
// Ignore single line attributes
trace!(
"extract_docs: ignoring single-line attribute, next_row: {:?}, up: {}",
next_row,
up
);
continue;
}
// Continue with the next line when transitioning out of a
// multi-line attribute
if attr_start || (line.ends_with(']') && !line.starts_with("//")) {
in_meta = !in_meta;
if !in_meta && !hit_top {
trace!(
"extract_docs: exiting multi-line attribute, next_row: {:?}, up: {}",
next_row,
up
);
continue;
};
}
if in_meta {
// Ignore milti-line attributes
trace!(
"extract_docs: ignoring multi-line attribute, next_row: {:?}, up: {}, in_meta: {}",
next_row,
up,
in_meta
);
continue;
} else if line.starts_with("////") {
trace!(
"extract_docs: break on comment header block, next_row: {:?}, up: {}",
next_row,
up
);
break;
} else if line.starts_with("///") && !up {
trace!(
"extract_docs: break on non-module docs, next_row: {:?}, up: {}",
next_row,
up
);
break;
} else if line.starts_with("//!") && up {
trace!(
"extract_docs: break on module docs, next_row: {:?}, up: {}",
next_row,
up
);
break;
} else if line.starts_with("///") || line.starts_with("//!") {
let pos = if line
.chars()
.nth(3)
.map(|c| c.is_whitespace())
.unwrap_or(false)
{
4
} else {
3
};
let doc_line = line[pos..].into();
if up {
docs.insert(0, doc_line);
} else {
docs.push(doc_line);
}
}
if hit_top {
// The top of the file was reached
debug!(
"extract_docs: bailing out: prev_row == next_row; next_row = {:?}, up = {}",
next_row, up
);
break;
} else if line.starts_with("//") {
trace!(
"extract_docs: continuing after comment line, next_row: {:?}, up: {}",
next_row,
up
);
continue;
} else if line.is_empty() {
trace!(
"extract_docs: continuing after empty line, next_row: {:?}, up: {}",
next_row,
up
);
continue;
} else {
trace!(
"extract_docs: end of docs, next_row: {:?}, up: {}",
next_row,
up
);
break;
}
}
debug!(
"extract_docs: complete: row_end = {:?} (exclusive), up = {:?}, file = {:?}",
row, up, file
);
Ok(docs)
}

@vi
Copy link
Author

vi commented Dec 6, 2018

Tried hovering on all things in the source code and finally it failed to display the tooptip and started eating CPU. Also rls::actions::hover::def_docs mentioned in the spinning tasks.

After restart, hovering on the same item also triggers the bug. First hover: "Loading...", then the tooltip disappears and first task is locked up. Second hover: "Loading..." and the second task locks up. Third and subsequent hovers don't show "Loading...".

@vi
Copy link
Author

vi commented Dec 6, 2018

Simple repro:

Cargo.toml:

[package]
name = "lol"
version = "0.1.0"
authors = ["Vitaly _Vi Shukela <vi0oss@gmail.com>"]
edition = "2018"

[dependencies]
dns-parser = "=0.8.0"

main.rs:

fn main() {
    let _ : dns_parser::Packet;
}

Hover on Packet.

@vi vi changed the title rls-preview 1.31.6 (daa138c 2018-11-20) eats CPU when idle, supposedly after suspend-to-ram rls-preview 1.31.6 (daa138c 2018-11-20) eats CPU after trying to display docs of dns_parser::Packet Dec 6, 2018
@alexheretic
Copy link
Member

Great, thanks I can reproduce it. It is as I suspected the extract_docs loop.

@pietroalbini
Copy link
Member

This will be fixed in Rust 1.31.1, scheduled to be released on Thursday 20th.

@pietroalbini
Copy link
Member

@vi can you check if this is fixed in Rust 1.31.1? You can download the pre-release with:

RUSTUP_DIST_SERVER=https://dev-static.rust-lang.org rustup update stable

@vi
Copy link
Author

vi commented Dec 19, 2018

@pietroalbini , I already saw it fixed on NIghtly.

How to I point vscode to stable's RLS instead of nightly's?

@pietroalbini
Copy link
Member

Hmm, I don't actually use RLS, so unfortunately I don't know :(

@vi
Copy link
Author

vi commented Dec 19, 2018

Unrelated, but starting /home/rust/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/rls --cli produces error

{"message":"found crate `core` compiled by an incompatible version of rustc"

, while /home/rust/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rls --cli boots without that error. Even after clearing project's target/.

And the project is #![feature]d, so stable RLS won't probably work on it anyway.

@alexheretic
Copy link
Member

alexheretic commented Dec 19, 2018

@pietroalbini I can confirm this is fixed in the pre-release channel.

The Packet hover tests works instead of consuming a core and not working.

fn main() {
    let _: dns_parser::Packet;
}

Thanks for the backport!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants