I'm using neovim + LanguageClient-neovim.
In one of my projects, the language server works fine (hover, goto def, list references and so on) until I try changing the text, at which point it crashes. Here's the log from LanguageClient-neovim's /tmp/LanguageServer.log
:
2017-12-24 14:57:04.141 ( 0.035s) [include_scanner ] utils.cc:144 WARN| Unable to open directory /usr/include/rapidjson/include/
cquery: ../../third_party/rapidjson/include/rapidjson/document.h:1233: rapidjson::GenericValue::MemberIterator rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >::FindMember(const GenericValue<Encoding, SourceAllocator> &) [Encoding = rapidjson::UTF8<char>, Allocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, SourceAllocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>]: Assertion `IsObject()' failed.
#0 0x00007fe03790d735 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/home/yalter/.local/cquery/bin/../lib/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-14.04/lib/libclang.so.4+0x158a735)
#1 0x00007fe03790dd76 SignalHandler(int) (/home/yalter/.local/cquery/bin/../lib/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-14.04/lib/libclang.so.4+0x158ad76)
#2 0x00007fe0399e6da0 __restore_rt (/usr/lib/libpthread.so.0+0x11da0)
#3 0x00007fe035715860 __GI_raise (/usr/lib/libc.so.6+0x34860)
#4 0x00007fe035716ec9 __GI_abort (/usr/lib/libc.so.6+0x35ec9)
#5 0x00007fe03570e0bc __assert_fail_base (/usr/lib/libc.so.6+0x2d0bc)
#6 0x00007fe03570e133 (/usr/lib/libc.so.6+0x2d133)
#7 0x0000559748a6fc44 rapidjson::GenericMemberIterator<false, rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >::FindMember<rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > const&) /home/yalter/Source/cpp/cquery/build/release/../../third_party/rapidjson/include/rapidjson/document.h:1234:9
#8 0x0000559748a6fc44 rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >::FindMember(char const*) /home/yalter/Source/cpp/cquery/build/release/../../third_party/rapidjson/include/rapidjson/document.h:1213:0
#9 0x0000559748a6fc44 void ReflectMember<lsPosition>(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, char const*, lsPosition&) /home/yalter/Source/cpp/cquery/build/release/../../src/serializer.h:181:0
#10 0x0000559748a8cb7e void Reflect<rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > >(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, lsRange&) /home/yalter/Source/cpp/cquery/build/release/../../src/language_server_api.h:172:1
#11 0x0000559748a8cb7e void ReflectMember<lsRange>(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, char const*, lsRange&) /home/yalter/Source/cpp/cquery/build/release/../../src/serializer.h:184:0
#12 0x0000559748a973f8 void Reflect<rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> > >(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, lsTextDocumentContentChangeEvent&) /home/yalter/Source/cpp/cquery/build/release/../../src/language_server_api.h:999:1
#13 0x0000559748a973f8 void Reflect<lsTextDocumentContentChangeEvent>(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, std::vector<lsTextDocumentContentChangeEvent, std::allocator<lsTextDocumentContentChangeEvent> >&) /home/yalter/Source/cpp/cquery/build/release/../../src/serializer.h:160:0
#14 0x0000559748a972b7 void ReflectMember<std::vector<lsTextDocumentContentChangeEvent, std::allocator<lsTextDocumentContentChangeEvent> > >(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, char const*, std::vector<lsTextDocumentContentChangeEvent, std::allocator<lsTextDocumentContentChangeEvent> >&) /home/yalter/Source/cpp/cquery/build/release/../../src/serializer.h:0:5
#15 0x0000559748a96e94 void ReflectMember<lsTextDocumentDidChangeParams>(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&, char const*, lsTextDocumentDidChangeParams&) /home/yalter/Source/cpp/cquery/build/release/../../src/language_server_api.h:0:1
#16 0x0000559748a96bc5 std::_Head_base<0ul, BaseIpcMessage*, false>::_Head_base<BaseIpcMessage*&>(BaseIpcMessage*&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/tuple:133:4
#17 0x0000559748a96bc5 std::_Tuple_impl<0ul, BaseIpcMessage*, std::default_delete<BaseIpcMessage> >::_Tuple_impl<BaseIpcMessage*&, std::default_delete<(anonymous namespace)::Ipc_TextDocumentDidChange>, void>(BaseIpcMessage*&, std::default_delete<(anonymous namespace)::Ipc_TextDocumentDidChange>&&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/tuple:218:0
#18 0x0000559748a96bc5 std::tuple<BaseIpcMessage*, std::default_delete<BaseIpcMessage> >::tuple<BaseIpcMessage*&, std::default_delete<(anonymous namespace)::Ipc_TextDocumentDidChange>, true>(BaseIpcMessage*&, std::default_delete<(anonymous namespace)::Ipc_TextDocumentDidChange>&&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/tuple:972:0
#19 0x0000559748a96bc5 std::__uniq_ptr_impl<BaseIpcMessage, std::default_delete<BaseIpcMessage> >::__uniq_ptr_impl<std::default_delete<(anonymous namespace)::Ipc_TextDocumentDidChange> >(BaseIpcMessage*, std::default_delete<(anonymous namespace)::Ipc_TextDocumentDidChange>&&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/unique_ptr.h:144:0
#20 0x0000559748a96bc5 std::unique_ptr<BaseIpcMessage, std::default_delete<BaseIpcMessage> >::unique_ptr<(anonymous namespace)::Ipc_TextDocumentDidChange, std::default_delete<(anonymous namespace)::Ipc_TextDocumentDidChange>, void>(std::unique_ptr<(anonymous namespace)::Ipc_TextDocumentDidChange, std::default_delete<(anonymous namespace)::Ipc_TextDocumentDidChange> >&&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/unique_ptr.h:253:0
#21 0x0000559748a96bc5 std::_Function_handler<std::unique_ptr<BaseIpcMessage, std::default_delete<BaseIpcMessage> > (rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&), MessageRegistryRegister<(anonymous namespace)::Ipc_TextDocumentDidChange>::MessageRegistryRegister()::{lambda(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&)#1}>::_M_invoke(std::_Any_data const&, rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/std_function.h:301:0
#22 0x0000559748a40d6d std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_data() const /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/basic_string.h:176:28
#23 0x0000559748a40d6d std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_is_local() const /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/basic_string.h:211:0
#24 0x0000559748a40d6d std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/basic_string.h:220:0
#25 0x0000559748a40d6d std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/basic_string.h:647:0
#26 0x0000559748a40d6d MessageRegistry::Parse(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&) /home/yalter/Source/cpp/cquery/build/release/../../src/language_server_api.cc:179:0
#27 0x0000559748a40730 rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>::Destroy() /home/yalter/Source/cpp/cquery/build/release/../../third_party/rapidjson/include/rapidjson/document.h:2473:9
#28 0x0000559748a40730 rapidjson::GenericDocument<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, rapidjson::CrtAllocator>::~GenericDocument() /home/yalter/Source/cpp/cquery/build/release/../../third_party/rapidjson/include/rapidjson/document.h:2151:0
#29 0x0000559748a40730 MessageRegistry::ReadMessageFromStdin(bool) /home/yalter/Source/cpp/cquery/build/release/../../src/language_server_api.cc:159:0
#30 0x0000559748a14bde std::unique_ptr<BaseIpcMessage, std::default_delete<BaseIpcMessage> >::operator bool() const /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/unique_ptr.h:351:22
#31 0x0000559748a14bde LaunchStdinLoop(Config*, std::unordered_map<IpcId, Timer, std::hash<IpcId>, std::equal_to<IpcId>, std::allocator<std::pair<IpcId const, Timer> > >*)::$_0::operator()() const /home/yalter/Source/cpp/cquery/build/release/../../src/command_line.cc:249:0
#32 0x0000559748a14bde std::_Function_handler<WorkThread::Result (), LaunchStdinLoop(Config*, std::unordered_map<IpcId, Timer, std::hash<IpcId>, std::equal_to<IpcId>, std::allocator<std::pair<IpcId const, Timer> > >*)::$_0>::_M_invoke(std::_Any_data const&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/std_function.h:301:0
#33 0x0000559748b70356 WorkThread::StartThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<WorkThread::Result ()> const&)::$_0::operator()() const /home/yalter/Source/cpp/cquery/build/release/../../src/work_thread.cc:19:18
#34 0x0000559748b70356 void std::__invoke_impl<void, WorkThread::StartThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<WorkThread::Result ()> const&)::$_0>(std::__invoke_other, WorkThread::StartThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<WorkThread::Result ()> const&)::$_0&&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/invoke.h:60:0
#35 0x0000559748b70356 std::__invoke_result<WorkThread::StartThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<WorkThread::Result ()> const&)::$_0>::type std::__invoke<WorkThread::StartThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<WorkThread::Result ()> const&)::$_0>(WorkThread::StartThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<WorkThread::Result ()> const&)::$_0&&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/bits/invoke.h:95:0
#36 0x0000559748b70356 _ZNSt6thread8_InvokerISt5tupleIJZN10WorkThread11StartThreadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt8functionIFNS2_6ResultEvEEE3$_0EEE9_M_invokeIJLm0EEEEDTclsr3stdE8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/thread:234:0
#37 0x0000559748b70356 std::thread::_Invoker<std::tuple<WorkThread::StartThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<WorkThread::Result ()> const&)::$_0> >::operator()() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/thread:243:0
#38 0x0000559748b70356 std::thread::_State_impl<std::thread::_Invoker<std::tuple<WorkThread::StartThread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<WorkThread::Result ()> const&)::$_0> > >::_M_run() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.1/../../../../include/c++/7.2.1/thread:186:0
#39 0x00007fe0360b5a6f std::default_delete<std::thread::_State>::operator()(std::thread::_State*) const /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/unique_ptr.h:78:0
#40 0x00007fe0360b5a6f std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >::~unique_ptr() /build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/unique_ptr.h:268:0
#41 0x00007fe0360b5a6f execute_native_thread_routine /build/gcc/src/gcc/libstdc++-v3/src/c++11/thread.cc:79:0
#42 0x00007fe0399dc08a start_thread (/usr/lib/libpthread.so.0+0x708a)
#43 0x00007fe0357d742f __GI___clone (/usr/lib/libc.so.6+0xf642f)
The warning about being unable to open the include is output when the server loads, the rest is output upon a crash.