fork-dev / TrackerWin

Bug and issue tracker for Fork for Windows
461 stars 10 forks source link

Fork crashes mid-rebase --onto and keeps crashing on restart #1761

Open jmartens opened 1 year ago

jmartens commented 1 year ago

While performing a git rebase --update-refs --onto A B from Fork console Fork crashed. If I restart Fork it keeps crashing. Here is the log:

🔷 2023-01-25 13:28:41.277 
 _____                  _
|___  |  ___   __ _ __ | |   Fork 1.80.0.0
   _| | / _ \ |__` |\ \| |   Git: C:\Program Files\Git\bin\git.exe
  |_  || (_) |   | | >   |   Update Channel: Develop
    |_| \___/    |_|/_/|_|     https://fork.dev

🔷 2023-01-25 13:28:41.301 Start IPC server Fork_Pipe196524_AskPass
◽️ 2023-01-25 13:28:41.301 Fork_Pipe196524_AskPass: waiting for next event '709'
🔷 2023-01-25 13:28:41.301 Start IPC server Fork_Pipe196524_Default
◽️ 2023-01-25 13:28:41.301 Fork_Pipe196524_Default: waiting for next event '709'
🔷 2023-01-25 13:28:41.695 Refresh Theme
🔷 2023-01-25 13:28:41.762 Log target: AppData log file
🔷 2023-01-25 13:28:41.918 Last update check: 25-1-2023 07:34:05. Next one: 26-1-2023 07:34:05
🔷 2023-01-25 13:28:42.487 Restore workspance 'Work' with 10 tabs
◽️ 2023-01-25 13:28:42.530      602 ms: Initialize Paddle
🔷 2023-01-25 13:28:42.838 RefreshRepositoryData
◽️ 2023-01-25 13:28:42.838 matlab-docker-builder RefreshRepositoryDataGitCommand All
◽️ 2023-01-25 13:28:42.849 Loading matlab-docker-builder settings.
🔷 2023-01-25 13:28:43.099 WindowActivated
🔷 2023-01-25 13:28:43.200 App start: 770ms, AppInitialization: 609ms, MainWindowOpening: 715ms, MainWindowActivation: 724ms, Total: 2817ms
🔷 2023-01-25 13:28:43.323 Refresh 'matlab-docker-builder' data. Updated.
🔷 2023-01-25 13:28:43.323 RefreshRepositoryStatus
⚠️ 2023-01-25 13:28:43.597 Cannot get read rebase todo list count: 'System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
   at System.String.Substring(Int32 startIndex, Int32 length)
   at Fork.Git.Commands.GetRepositoryStateGitCommand.GetRebaseTodoList(String todoListPath)'
🔷 2023-01-25 13:28:43.597 Refresh 'matlab-docker-builder' status. Updated 2 files
jmartens commented 1 year ago

This is the matching status for the repo on which it crashes:

$ git status
interactive rebase in progress; onto 74c75c9
Last commands done (3 commands done):
   update-ref 8f1d676
   pick 5683681 feature: expose Matlab capabilities
  (see more in file .git/rebase-merge/done)
Next commands to do (2 remaining commands):
   pick 8ec936b feature: add GitVersion
   pick 1a67a7b fix: expose git to prevent gitversion failure
  (use "git rebase --edit-todo" to view and edit)
You are currently rebasing branch 'feature/GitVersion' on '74c75c9'.
  (fix conflicts and then run "git rebase --continue")
  (use "git rebase --skip" to skip this patch)
  (use "git rebase --abort" to check out the original branch)

Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
        both modified:   Dockerfile

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitignore

no changes added to commit (use "git add" and/or "git commit -a")
DanPristupov commented 1 year ago

Did you set pull.rebase true in the git config? Fork doesn't support --rebase-merges.

jmartens commented 1 year ago

It was a local git rebase --update-refs --onto using the command window from Fork.

I routinely do this and then resolve merge conflicts using the Fork UI. This was the first time the UI crashed while doing so and keeps crashing.

jmartens commented 1 year ago

pull.rebase is set to false for this repo, but this seems irrelevant to me as this is no pull.

$ git config --get pull.rebase
false
$
DanPristupov commented 1 year ago

I'm sorry, I might copy-pasted a wrong parameter. I meant a global --rebase-merges option (trying to find it now).

DanPristupov commented 1 year ago

This was the first time the UI crashed while doing so and keeps crashing.

Did the branch that you was rebasing contain merges?

DanPristupov commented 1 year ago

Cannot get read rebase todo list count

Can you send me .git/rebase-merge/git-rebase-todo to support@fork.dev, so I could check the file?

jmartens commented 1 year ago

Do you really need it as email? It just reads:

$ cat .git/rebase-merge/git-rebase-todo
pick 8ec936b07503445bec4b886c6f75c45d417056ed feature: add GitVersion
pick 1a67a7b9903592d78d9a9452154f5efb48f9b00c fix: expose git to prevent gitversion failure
$
jmartens commented 1 year ago

Did the branch that you was rebasing contain merges?

No. I have aborted the rebase to be able to make a screenshot:

image

I was trying to rebase all branches from fixes/matlab-builder up to and including feature/GitVersion onto feature/auto-expose-matlab-capabilities using git rebase --update-refs --onto feature/auto-expose-matlab-capabilities fixes/matlab-builder

jmartens commented 1 year ago

In order to sent the full contents of .git/rebase-merge I retried and after resolving the conflicts in the first commit I get the following error message:

image

with the following contents:

Rebased 1 commits
Remains 3 commits
Current step: Pick  8f1d676966a79f811dcf9a437c03a9517ad7794a
Next step: Pick  56836816debbd8a603dc2ded26bf1deb531a8f22
Ask message for  8f1d676966a79f811dcf9a437c03a9517ad7794a
[detached HEAD b0e358e] feature: use installer_input.txt from install folder
 2 files changed, 13 deletions(-)
 delete mode 100644 installer_input.txt
Auto-merging Dockerfile
CONFLICT (content): Merge conflict in Dockerfile

Rebasing (2/5)
Rebasing (3/5)
error: could not apply 5683681... feature: expose Matlab capabilities
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 5683681... feature: expose Matlab capabilities

This is what the logs look like just after it:

🔷 2023-01-25 15:00:31.644 
 _|_|_|_|                         _|       Fork 1.80.0.0
 _|           _|_|     _|  _|_|   _|  _|   Git: C:\Program Files\Git\bin\git.exe
 _|_|_|     _|    _|   _|_|       _|_|     Update Channel: Develop
 _|         _|    _|   _|         _|  _|
 _|           _|_|     _|         _|    _|   https://fork.dev

🔷 2023-01-25 15:00:31.671 Start IPC server Fork_Pipe189596_AskPass
◽️ 2023-01-25 15:00:31.671 Fork_Pipe189596_AskPass: waiting for next event '960'
🔷 2023-01-25 15:00:31.671 Start IPC server Fork_Pipe189596_Default
◽️ 2023-01-25 15:00:31.671 Fork_Pipe189596_Default: waiting for next event '960'
🔷 2023-01-25 15:00:31.958 Refresh Theme
🔷 2023-01-25 15:00:32.018 Log target: AppData log file
🔷 2023-01-25 15:00:32.153 Last update check: 25-1-2023 07:34:05. Next one: 26-1-2023 07:34:05
🔷 2023-01-25 15:00:32.510 Restore workspance 'Work' with 10 tabs
🔷 2023-01-25 15:00:32.857 RefreshRepositoryData
◽️ 2023-01-25 15:00:32.862 matlab-docker-builder RefreshRepositoryDataGitCommand All
◽️ 2023-01-25 15:00:32.874 Loading matlab-docker-builder settings.
◽️ 2023-01-25 15:00:33.031      876 ms: Initialize Paddle
🔷 2023-01-25 15:00:33.124 WindowActivated
🔷 2023-01-25 15:00:33.256 App start: 774ms, AppInitialization: 504ms, MainWindowOpening: 481ms, MainWindowActivation: 756ms, Total: 2516ms
🔷 2023-01-25 15:00:33.256 Refresh 'matlab-docker-builder' data. Updated.
🔷 2023-01-25 15:00:33.256 RefreshRepositoryStatus
🔷 2023-01-25 15:00:33.493 Refresh 'matlab-docker-builder' status. Updated 1 files
🔷 2023-01-25 15:00:33.998 Loaded OAuth credentials for jmartens@https://github.com
◽️ 2023-01-25 15:00:34.425     432ms: GET https://api.github.com/notifications?page=1&per_page=70&all=true (200)
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse 'url'
⚠️ 2023-01-25 15:00:34.425 Cannot parse GitServiceNotification
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse 'url'
⚠️ 2023-01-25 15:00:34.425 Cannot parse GitServiceNotification
⚠️ 2023-01-25 15:00:34.425 Cannot parse 'url'
⚠️ 2023-01-25 15:00:34.425 Cannot parse GitServiceNotification
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
⚠️ 2023-01-25 15:00:34.425 Cannot parse notification type 'Release'
🔷 2023-01-25 15:00:34.425 Save accounts
🔷 2023-01-25 15:00:46.160 WindowActivated
🔷 2023-01-25 15:00:46.160 Application Window Activated
🔷 2023-01-25 15:00:46.160 RefreshRepositoryData
◽️ 2023-01-25 15:00:46.160 matlab-docker-builder RefreshRepositoryDataGitCommand DefaultRefresh
◽️ 2023-01-25 15:00:46.501 + refs/heads/feature/GitVersion
◽️ 2023-01-25 15:00:46.501 - refs/heads/feature/GitVersion
◽️ 2023-01-25 15:00:46.652 Detected HEAD change
🔷 2023-01-25 15:00:46.652 Refresh 'matlab-docker-builder' data. Updated.
🔷 2023-01-25 15:00:46.652 RefreshRepositoryStatus
🔷 2023-01-25 15:00:46.838 Refresh 'matlab-docker-builder' status. Updated 3 files
◽️ 2023-01-25 15:00:46.838 Saving matlab-docker-builder settings.
🔷 2023-01-25 15:00:51.993 Merge conflict in 'Dockerfile' using merge tool
🔷 2023-01-25 15:00:51.993 Local change type: Unmerged
🔷 2023-01-25 15:00:51.993 Remote change type: Unmerged
◽️ 2023-01-25 15:01:06.993 insert at 2097 string: 'RUN C:\tmp_matlab\setup.exe -inputFile C:\matlab\installer_input.txt | Wait-Process'
◽️ 2023-01-25 15:01:06.993 old line 46: '
'
◽️ 2023-01-25 15:01:07.977 insert at 2180 string: '
'
◽️ 2023-01-25 15:01:07.977 old line 46: 'RUN C:\tmp_matlab\setup.exe -inputFile C:\matlab\installer_input.txt | Wait-Process
'
◽️ 2023-01-25 15:01:07.977 new line: '
'
◽️ 2023-01-25 15:01:09.429 Old line  #45 'RUN c:\tmp_matlab\setup.exe -inputFile installer_input.txt
'
◽️ 2023-01-25 15:01:09.429 Old line  #46 'RUN C:\tmp_matlab\setup.exe -inputFile C:\matlab\installer_input.txt | Wait-Process
'
🔷 2023-01-25 15:01:09.429 new line: 'RUN c:\tmp_matlab\setup.exe -inputFile installer_input.txt
'
🔷 2023-01-25 15:01:09.429 new line: 'RUN C:\tmp_matlab\setup.exe -inputFile C:\matlab\installer_input.txt | Wait-Process
'
🔷 2023-01-25 15:01:14.040 WindowActivated
🔷 2023-01-25 15:01:14.040 Application Window Activated: skip (SideBySideMergeWindow)
◽️ 2023-01-25 15:01:14.074 Saving settings.
🔷 2023-01-25 15:01:14.091 RefreshRepositoryStatus
🔷 2023-01-25 15:01:14.254 Refresh 'matlab-docker-builder' status. Updated 3 files
⚠️ 2023-01-25 15:01:17.567 Git request failed'-c credential.helper="" -c credential.helper="C:/Users/jonathan.martens/AppData/Local/Fork/app-1.80.0/Fork.AskPass.exe" -c credential.helper="manager-core" -c core.commentChar=^ -c sequence.editor="C:/Users/jonathan.martens/AppData/Local/Fork/app-1.80.0/Fork.RI.exe" -c core.editor="C:/Users/jonathan.martens/AppData/Local/Fork/app-1.80.0/Fork.RI.exe" rebase --continue':
Rebasing (2/5)
Rebasing (3/5)
error: could not apply 5683681... feature: expose Matlab capabilities
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 5683681... feature: expose Matlab capabilities

🔷 2023-01-25 15:01:31.978 Automatically fetching 'matlab-docker-builder'
🔷 2023-01-25 15:01:32.187 Automatically fetching 'xio-export-scripting'
🔷 2023-01-25 15:01:32.394 Automatically fetching 'ESAPIX'
🔷 2023-01-25 15:01:32.604 Automatically fetching 'automated-patient-qa-sync'
🔷 2023-01-25 15:01:32.813 Automatically fetching 'medphoton-studyuid-fixer'
🔷 2023-01-25 15:01:33.038 Automatically fetching 'VsTestConsoleWrapperExample'
🔷 2023-01-25 15:01:33.245 Automatically fetching 'Varian-Code-Samples'
🔷 2023-01-25 15:01:33.454 Automatically fetching 'eclipse-verification-plan'
🔷 2023-01-25 15:01:33.664 Automatically fetching 'varianlogunpacker'
🔷 2023-01-25 15:01:33.877 Automatically fetching 'iberion-monthly-qa-scripts'
🔷 2023-01-25 15:01:35.843 RefreshRepositoryData
◽️ 2023-01-25 15:01:35.843 matlab-docker-builder RefreshRepositoryDataGitCommand Revisions, References
◽️ 2023-01-25 15:01:36.214 matlab-docker-builder Repository data are equal. No Changes
🔷 2023-01-25 15:01:41.015 WindowActivated
🔷 2023-01-25 15:01:41.015 Application Window Activated: skip (ErrorWindow)
◽️ 2023-01-25 15:01:41.042 Saving matlab-docker-builder settings.
🔷 2023-01-25 15:01:41.042 RefreshRepositoryStatus
⚠️ 2023-01-25 15:01:41.218 Cannot get read rebase todo list count: 'System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
   at System.String.Substring(Int32 startIndex, Int32 length)
   at Fork.Git.Commands.GetRepositoryStateGitCommand.GetRebaseTodoList(String todoListPath)'
🔷 2023-01-25 15:01:41.218 Refresh 'matlab-docker-builder' status. Updated 2 files
🔷 2023-01-25 15:01:41.218 RefreshRepositoryData
◽️ 2023-01-25 15:01:41.218 matlab-docker-builder RefreshRepositoryDataGitCommand Head, Revisions, LocalBranches, Status
◽️ 2023-01-25 15:01:41.572 Detected HEAD change
🔷 2023-01-25 15:01:41.572 Refresh 'matlab-docker-builder' data. Updated.

After dismissing this window the application crashes and keeps crashing and you get the same log file contents as in my opening statement.

DanPristupov commented 1 year ago

Thank you for your patience. I've reproduced the problem. Looks like Fork doesn't support the new update-ref rebase command. Let me think how to fix that.

jmartens commented 1 year ago

Great, took the liberty of using another tool (SourceTree) to see if they could show what was happening and this is how it looks, perhaps that might help you:

image

Apparently there is still a file in a conflicted state having merge markers.

DanPristupov commented 1 year ago

It's not related, I think. Fork calculates the active rebase progress and crashes on unknown update-refs entry. It should not crash on unknown records of course, but at the time I wrote that, git rebase used different rebase engine :).

jmartens commented 1 year ago

Looks like Fork doesn't support the new update-ref rebase command. Let me think how to fix that.

OK, I will rebase the branches individually one after another for now. Will welcome support for --update-refs though 😊