diffview.nvim icon indicating copy to clipboard operation
diffview.nvim copied to clipboard

[Bug] relatively rare crash when updating view

Open emmanueltouzery opened this issue 2 years ago • 4 comments

Description

relatively rare crash when updating the diff view. i think it's after staging a file. or maybe initial display. This is one commit from the latest git, but the relevant code seems to not have changed. I have the commit 94f5f40543e393d9028bae9ce2fedf6da3af701a.

Expected behavior

No response

Actual behavior

here is the stack trace:

Error executing vim.schedule lua callback: ...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:179: The coroutine failed with this message: 
	context: cur_thread=main co_thread= co_func=...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:327
...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:417: attempt to index a nil value
stack traceback:
	...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua: in function 'func'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:366: in function <...e>
stack traceback:
	[C]: in function 'error'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:179: in function 'raise'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:207: in function 'step'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:239: in function 'notify_all'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:214: in function 'step'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:392: in function <...e>

Steps to reproduce

cannot reproduce at wish

Health check

Output of :checkhealth diffview
==============================================================================
diffview: require("diffview.health").check()

Checking plugin dependencies ~
- OK nvim-web-devicons installed.

Checking VCS tools ~
- The plugin requires at least one of the supported VCS tools to be valid.
- OK Git found.
- OK Git is up-to-date. (2.41.0)
- WARNING Configured `hg_cmd` is not executable: 'hg'

Log info

:DiffviewLog.. not 100% sure what's relevant so I rather put more than less. Disguised the file names.
[INFO  2023-07-10 17:33:20.024 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:342: Retry was successful!
[ERROR 2023-07-10 17:33:20.086 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:329: Job expected output, but returned nothing! Code: 0
[ERROR 2023-07-10 17:33:20.086 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177: [job-info] Exit code: 0
[ERROR 2023-07-10 17:33:20.086 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cmd] git 'rev-parse' '--revs-only' ':exapp/lib/project/fname'
[ERROR 2023-07-10 17:33:20.086 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cwd] /home/emmanuel/projects/project
[WARN  2023-07-10 17:33:20.086 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:381: (1/2) Retrying job...
[INFO  2023-07-10 17:33:20.124 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:342: Retry was successful!
[INFO  2023-07-10 17:33:20.219 +0200] ...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:483: [DiffView] Completed update for 10 files successfully (698.527 ms)
[INFO  2023-07-10 17:33:20.487 +0200] ...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:483: [DiffView] Completed update for 11 files successfully (1580.475 ms)
[INFO  2023-07-10 17:34:45.566 +0200] ...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:483: [DiffView] Completed update for 10 files successfully (421.335 ms)
[INFO  2023-07-10 17:35:04.768 +0200] ...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:483: [DiffView] Completed update for 10 files successfully (512.062 ms)
[ERROR 2023-07-10 17:35:04.950 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:142: Inbalance in diff data!
[ERROR 2023-07-10 17:35:04.950 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:145: [job-info] Exit code: 0
[ERROR 2023-07-10 17:35:04.950 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:145:      [cmd] git 'diff' '--ignore-submodules' '--numstat' '--'
[ERROR 2023-07-10 17:35:04.950 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:145:      [cwd] /home/emmanuel/projects/project
[ERROR 2023-07-10 17:35:04.951 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:148: (1/2) Retrying failed jobs...
[INFO  2023-07-10 17:35:05.006 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:157: Retry was successful!
[INFO  2023-07-10 17:35:05.572 +0200] ...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:483: [DiffView] Completed update for 10 files successfully (667.419 ms)
[ERROR 2023-07-10 17:35:08.992 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:329: Job expected output, but returned nothing! Code: 0
[ERROR 2023-07-10 17:35:08.992 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177: [job-info] Exit code: 0
[ERROR 2023-07-10 17:35:08.992 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cmd] git 'rev-parse' '--revs-only' ':exapp/lib/project/fname'
[ERROR 2023-07-10 17:35:08.992 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cwd] /home/emmanuel/projects/project
[WARN  2023-07-10 17:35:08.993 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:381: (1/2) Retrying job...
[INFO  2023-07-10 17:35:09.083 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:342: Retry was successful!
[ERROR 2023-07-10 17:35:09.633 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:329: Job expected output, but returned nothing! Code: 0
[ERROR 2023-07-10 17:35:09.633 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177: [job-info] Exit code: 0
[ERROR 2023-07-10 17:35:09.633 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cmd] git 'rev-parse' '--revs-only' ':exapp/lib/project/fname'
[ERROR 2023-07-10 17:35:09.633 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cwd] /home/emmanuel/projects/project
[WARN  2023-07-10 17:35:09.634 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:381: (1/2) Retrying job...
[ERROR 2023-07-10 17:35:09.634 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:329: Job expected output, but returned nothing! Code: 0
[ERROR 2023-07-10 17:35:09.634 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1159: [job-info] Exit code: 0
[ERROR 2023-07-10 17:35:09.634 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1159:      [cmd] git 'rev-parse' 'HEAD' '--'
[ERROR 2023-07-10 17:35:09.634 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1159:      [cwd] /home/emmanuel/projects/project
[WARN  2023-07-10 17:35:09.634 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:381: (1/2) Retrying job...
[INFO  2023-07-10 17:35:09.678 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:342: Retry was successful!
[ERROR 2023-07-10 17:35:09.679 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:329: Job expected output, but returned nothing! Code: 0
[ERROR 2023-07-10 17:35:09.679 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1159: [job-info] Exit code: 0
[ERROR 2023-07-10 17:35:09.679 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1159:      [cmd] git 'rev-parse' 'HEAD' '--'
[ERROR 2023-07-10 17:35:09.679 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1159:      [cwd] /home/emmanuel/projects/project
[WARN  2023-07-10 17:35:09.679 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:381: (2/2) Retrying job...
[ERROR 2023-07-10 17:35:09.706 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:329: Job expected output, but returned nothing! Code: 0
[ERROR 2023-07-10 17:35:09.707 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1159: [job-info] Exit code: 0
[ERROR 2023-07-10 17:35:09.707 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1159:      [cmd] git 'rev-parse' 'HEAD' '--'
[ERROR 2023-07-10 17:35:09.707 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1159:      [cwd] /home/emmanuel/projects/project
[ERROR 2023-07-10 17:35:09.707 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:337: All retries failed!
[INFO  2023-07-10 17:35:09.770 +0200] ...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:483: [DiffView] Completed update for 10 files successfully (1479.218 ms)
[INFO  2023-07-10 17:35:11.957 +0200] ...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:483: [DiffView] Completed update for 5233 files successfully (2947.018 ms)
[ERROR 2023-07-10 17:35:12.870 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:142: Inbalance in diff data!
[ERROR 2023-07-10 17:35:12.870 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:145: [job-info] Exit code: 0
[ERROR 2023-07-10 17:35:12.870 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:145:      [cmd] git 'diff' '--ignore-submodules' '--numstat' '--cached' '6c35d54ae85af4d386a625ce7bd8035f359956d9' '--'
[ERROR 2023-07-10 17:35:12.870 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:145:      [cwd] /home/emmanuel/projects/project
[ERROR 2023-07-10 17:35:12.870 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:148: (1/2) Retrying failed jobs...
[INFO  2023-07-10 17:35:12.905 +0200] ...ck/packer/start/diffview.nvim/lua/diffview/multi_job.lua:157: Retry was successful!
[ERROR 2023-07-10 17:35:13.731 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:329: Job expected output, but returned nothing! Code: 0
[ERROR 2023-07-10 17:35:13.731 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177: [job-info] Exit code: 0
[ERROR 2023-07-10 17:35:13.731 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cmd] git 'rev-parse' '--revs-only' ':exapp/lib/project/fname'
[ERROR 2023-07-10 17:35:13.731 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cwd] /home/emmanuel/projects/project
[WARN  2023-07-10 17:35:13.731 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:381: (1/2) Retrying job...
[INFO  2023-07-10 17:35:13.777 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:342: Retry was successful!
[ERROR 2023-07-10 17:35:13.777 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:329: Job expected output, but returned nothing! Code: 0
[ERROR 2023-07-10 17:35:13.777 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177: [job-info] Exit code: 0
[ERROR 2023-07-10 17:35:13.777 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cmd] git 'rev-parse' '--revs-only' ':source/file'
[ERROR 2023-07-10 17:35:13.777 +0200] ...art/diffview.nvim/lua/diffview/vcs/adapters/git/init.lua:1177:      [cwd] /home/emmanuel/projects/project
[WARN  2023-07-10 17:35:13.778 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:381: (1/2) Retrying job...
[INFO  2023-07-10 17:35:13.815 +0200] ...ite/pack/packer/start/diffview.nvim/lua/diffview/job.lua:342: Retry was successful!
[INFO  2023-07-10 17:35:14.209 +0200] ...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:483: [DiffView] Completed update for 10 files successfully (1815.451 ms)

Neovim version

NVIM v0.9.0
Build type: Release
LuaJIT 2.1.0-beta3

Operating system and version

Linux 6.3.8-200.fc38.x86_64 x86_64 GNU/Linux

Minimal config

No response

emmanueltouzery avatar Jul 10 '23 15:07 emmanueltouzery

I got it again now with the latest a111d19 commit:

Error executing vim.schedule lua callback: ...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:187: The coroutine failed with this message: 
	context: cur_thread=main co_thread=<thread 0x7fb1d16f5960> co_func=...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:327
...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:417: attempt to index a nil value
stack traceback:
	...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua: in function 'func'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:373: in function <...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:358>
stack traceback:
	[C]: in function 'error'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:187: in function 'raise'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:215: in function 'step'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:247: in function 'notify_all'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:222: in function 'step'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:399: in function <...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:391>

emmanueltouzery avatar Sep 26 '23 10:09 emmanueltouzery

Thanks for the report! Seems like a bug when resolving the file list diff during updates. I'm not really sure exactly what's going on here, but I'll look into it. We need more tests for this regardless.

sindrets avatar Oct 05 '23 10:10 sindrets

I got same error, when trying to merge to repositories to one repository with merge conflicts.

  • repo a (where merging)

  • repo b (what is merged)

  • repo a: git remote add b https://b.url

  • repo a: git fetch b

  • repo a: git merge --allow-unrelated-histories b/main

With this it seems always to go to error. I go to merge with command git mergetool

related git config:

[merge]
  tool = diffview

[mergetool]
  prompt = false
  keepBackup = false
[mergetool "diffview"]
  cmd = nvim -n -c "DiffviewOpen" "$MERGE"

amatrelan avatar Nov 27 '23 14:11 amatrelan

just to mention that the error is still present, as of commit 3afa6a053f680e9f1329c4a151db988a482306cd:

Error executing vim.schedule lua callback: ...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:187: The coroutine failed with this message: 
	context: cur_thread=main co_thread=<thread 0x7f41e9fa47f0> co_func=...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:327
...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:426: attempt to index a nil value
stack traceback:
	...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:426: in function <...iffview.nvim/lua/diffview/scene/views/diff/diff_view.lua:327>
	[C]: in function 'xpcall'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:361: in function <...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:358>
stack traceback:
	[C]: in function 'error'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:369: in function <...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:358>
stack traceback:
	[C]: in function 'error'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:187: in function 'raise'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:215: in function 'step'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:247: in function 'notify_all'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:222: in function 'step'
	...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:399: in function <...e/pack/packer/start/diffview.nvim/lua/diffview/async.lua:391>

emmanueltouzery avatar May 30 '24 12:05 emmanueltouzery