sindrets / diffview.nvim

Single tabpage interface for easily cycling through diffs for all modified files for any git rev.
Other
3.6k stars 101 forks source link

[Bug] relatively rare crash when updating view #395

Open emmanueltouzery opened 1 year ago

emmanueltouzery commented 1 year ago

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/pack/packer/start/diffview.nvim/lua/diffview/async.lua:351>
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/pack/packer/start/diffview.nvim/lua/diffview/async.lua:384>

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 commented 9 months ago

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>
sindrets commented 9 months ago

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.

Amatrelan commented 7 months ago

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

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"
emmanueltouzery commented 1 month ago

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>