deoplete-go freezes forever sometimes
clee opened this issue · 12 comments
Using gocode revision 843b7a63f621bb441274849d58671870adf1a5ce
and deoplete-go revision 7990da5c8c89a47e0ccd3b7e60a836a6f115641a
, when I edit JSON metadata, neovim completely locks up attempting to get autocomplete from gocode through deoplete-go.
I can reproduce this on multiple machines by inserting the cursor after the e
in json:"name"
inside https://github.com/clee/channon/blob/master/types.go
@clee Thanks issue and sorry for late reply.
I'll check it later, but are you still reproduce this problem? (create the issue at 19 days ago. sorry, just in case)
Not reliably; it seems to happen more when/if I leave neovim running for a long time (like, 24+ hours). Having any open neovim sessions with Go files, once the freezing starts, makes it impossible to enter insert mode in any of them. Exiting all neovim processes and re-launching neovim makes things work again for a while.
@clee Thanks reply. got it.
As a premise, gocode will gocode hang very rarely. I do not know the cause.
So, when your situation, gocode also hanged? actually exec gocode set
but not response.
And, sorry I'm not at good English... Your said situation is freeze deoplete-go only? or also neovim?
Not sure we have the same problem but re-installing gocode seemed to fix my deoplete freezing forever issue. I ran :GoUpdateBinaries
from vim (with a go file open s.t. I had the command available)
Still happens occasionally. Seems to be more frequent when I put an instance of neovim with a Go file open into the background (with Ctrl+Z).
@clee Please try :GoUpdateBinaries
command.
Please create the reproduce ways from neovim starting.
I will test it.
@Shougo I run :GoUpdateBinaries
(and :PlugUpdate
) every day :)
I'll see if I can figure out how to reproduce this reliably and report back with steps if I can.
Update: Following these steps, it happened on the first try, but not again after trying it three more times.
- Change to a directory with multiple go files.
- Use nvim to open one of the existing go files, and add a blank line. Exit insert mode. Hit Ctrl+Z to background.
- Use nvim to open a different existing go file.
After step 3, for me, the nvim process with the second file open was locked completely, and I could not move the cursor or enter insert mode. Opening more nvim processes on further go files resulted in all of the new processes being locked. But this does seem to be pretty difficult to reproduce reliably. I'll keep testing to see if I can figure out any other conditions that might make it more likely.
It may be neovim or neovim-python problem(or feature).
We cannot fix the problem.
Please create the new issue in them.
I also frequently have this problem. Pressing ctrl-C a couple of times unfreezes it, but disables deplete.
This is the stack trace that is printed from calling :messages
:
[deoplete] Traceback (most recent call last):
[deoplete] Traceback (most recent call last):
[deoplete] File "/Users/romeo/.config/vim/vimfiles/bundle/deoplete.nvim/rplugin/python3/deoplete/deoplete.py", line 90, in gather_results
[deoplete] File "/Users/romeo/.config/vim/vimfiles/bundle/deoplete.nvim/rplugin/python3/deoplete/deoplete.py", line 90, in gather_results
[deoplete] charpos = source.get_complete_position(ctx)
[deoplete] charpos = source.get_complete_position(ctx)
[deoplete] File "/Users/romeo/.config/vim/vimfiles/bundle/deoplete.nvim/rplugin/python3/deoplete/source/omni.py", line 36, in get_complete_position
[deoplete] File "/Users/romeo/.config/vim/vimfiles/bundle/deoplete.nvim/rplugin/python3/deoplete/source/omni.py", line 36, in get_complete_position
[deoplete] pos = self._get_complete_position(context, current_ft, filetype)
[deoplete] pos = self._get_complete_position(context, current_ft, filetype)
[deoplete] File "/Users/romeo/.config/vim/vimfiles/bundle/deoplete.nvim/rplugin/python3/deoplete/source/omni.py", line 51, in _get_complete_position
[deoplete] File "/Users/romeo/.config/vim/vimfiles/bundle/deoplete.nvim/rplugin/python3/deoplete/source/omni.py", line 51, in _get_complete_position
[deoplete] 'deoplete#util#exists_omnifunc', omnifunc):
[deoplete] 'deoplete#util#exists_omnifunc', omnifunc):
[deoplete] File "/usr/local/lib/python3.6/site-packages/neovim/api/nvim.py", line 230, in call
[deoplete] File "/usr/local/lib/python3.6/site-packages/neovim/api/nvim.py", line 230, in call
[deoplete] return self.request('nvim_call_function', name, args, **kwargs)
[deoplete] return self.request('nvim_call_function', name, args, **kwargs)
[deoplete] File "/usr/local/lib/python3.6/site-packages/neovim/api/nvim.py", line 131, in request
[deoplete] File "/usr/local/lib/python3.6/site-packages/neovim/api/nvim.py", line 131, in request
[deoplete] res = self._session.request(name, *args, **kwargs)
[deoplete] res = self._session.request(name, *args, **kwargs)
[deoplete] File "/usr/local/lib/python3.6/site-packages/neovim/msgpack_rpc/session.py", line 98, in request
[deoplete] File "/usr/local/lib/python3.6/site-packages/neovim/msgpack_rpc/session.py", line 98, in request
[deoplete] raise self.error_wrapper(err)
[deoplete] raise self.error_wrapper(err)
[deoplete] neovim.api.nvim.NvimError: b'Keyboard interrupt'
[deoplete] neovim.api.nvim.NvimError: b'Keyboard interrupt'
[deoplete] Could not get completions from: omni. Use :messages for error details.
@romeovs Please read this. It is not deoplete and deoplete-go problem.
Shougo/deoplete.nvim#546