git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Possible race condition with git-rebase + .git/index.lock

From
SJSergio Durigan Junior <sergiodj@sergiodj.net>
Date
Mar 11, 2019, 21:38 UTC
Message-ID
<87k1h55bx0.fsf@sergiodj.net>
Hi there,

I've been bit by this bug many times, and always forget to report it here, but this time I finally remembered.

The scenario is this:
- I have a local repository which tracks the upstream of the project.
- I have 120+ local commits.
- Every week or so, I have to rebase my local commits on top of
  upstream's origin/master.
The workflow is simple:
  # git fetch origin && git rebase origin/master

This works without problems most of the time (well, usually there are conflicts and all, but that's a burden I have to carry). However, sometimes I notice that git fails with:

  # git rebase origin/master
  ...
  Applying: commitX
  Applying: commitY
  Applying: commitZ
  fatal: Unable to create '/home/xyz/dir1/dir2/.git/index.lock': File exists.

The first thing I did was to check whether the index.lock file existed, but it doesn't.

I also I thought it might have something to do with "commitZ", but after I ran "git rebase --abort" and tried rebasing again, I noticed that it would stop at another commit.

This seems like a race condition, but after inspecting builtin/rebase.c it doesn't seem like the "git am" commands are run in parallel (and it wouldn't make sense if they did, anyway).

I tried using GIT_TRACE, but haven't seen any useful information in the logs. I tried using the "next" branch, and found that the problem exists there as well. I wonder if anyone else has seen this problem.

Thanks,
-- 
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF  31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/
Next: Eric Sunshine
Message 1 of 14 in “Possible race condition with git-rebase + .git/index.lock”
  1. Sergio Durigan JuniorMar 11, 2019
  2. Eric SunshineMar 11, 2019
  3. Sergio Durigan JuniorMar 11, 2019
  4. Duy NguyenMar 12, 2019
  5. Sergio Durigan JuniorMar 12, 2019
  6. Elijah NewrenMar 12, 2019
  7. Sergio Durigan JuniorMar 12, 2019
  8. Elijah NewrenMar 12, 2019
  9. Sergio Durigan JuniorMar 12, 2019
  10. Phillip WoodMar 13, 2019
  11. Sergio Durigan JuniorMar 13, 2019
  12. Jeff KingMar 13, 2019
  13. Sergio Durigan JuniorMar 13, 2019
  14. MingunOct 28, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.