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

Re: [PATCH v4] lockfile: add PID file for debugging stale locks

From
D. Ben Knoble <ben.knoble@gmail.com>
Date
Jan 8, 2026, 14:19 UTC
Message-ID
<CALnO6CAx+7r9tj8irLPCxCVQXq0BJcjac9XCD1zv2MBKTm_NgQ@mail.gmail.com>
In-Reply-To
<xmqqbjj4hnkr.fsf@gitster.g>
On Wed, Jan 7, 2026 at 8:59 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 24 quoted lines
>
> "Paulo Casaretto via GitGitGadget" <gitgitgadget@gmail.com> writes:
> > The PID file is created when a lock is acquired (if enabled), and
> > automatically cleaned up when the lock is released (via commit or
> > rollback). The file is registered as a tempfile so it gets cleaned up
> > by signal and atexit handlers if the process terminates abnormally.
> >
> > When a lock conflict occurs, the code checks for an existing PID file
> > and, if found, uses kill(pid, 0) to determine if the process is still
> > running. This allows providing context-aware error messages:
> >
> >   Lock is held by process 12345. Wait for it to finish, or remove
> >   the lock file to continue.
> >
> > Or for a stale lock:
> >
> >   Lock was held by process 12345, which is no longer running.
> >   Remove the stale lock file to continue.
>
> Two additional thoughts.
>
>  * 12345 may be running as your kill(12345,0) did not fail, but that
>    may be a process different from the one that held the lock and
>    then died without cleaning up.
[snip]
Show 13 quoted lines
> > The feature is controlled via core.lockfilePid configuration (boolean).
> > Defaults to false. When enabled, PID files are created for all lock
> > operations.
> >
> > Existing PID files are always read when displaying lock errors,
> > regardless of the core.lockfilePid setting. This ensures helpful
> > diagnostics even when the feature was previously enabled and later
> > disabled.
>
> This makes it even more easily triggerable to notice a running
> process that happens to be reusing a process ID an old process used
> to have (i.e. the first "thought" above---the phrasing of the
> message needs to be carefully thought out).

Yep. I mentioned this back in <CALnO6CB1igUL7nv6ByUmwMRc9tqEvs=18wD81GNpaA=FLpL2vw@mail.gmail.com>:

> just because a process X is running doesn't mean
> it was the one holding the lock, right? Since PIDs can be reused.

which seems to have been ignored, but I'm glad to know I didn't make this concern up out of thin air :)

Best,
-- 
D. Ben Knoble
Previous: Junio C HamanoNext: Paulo Casaretto via GitGitGadget
Message 23 of 36 in “lockfile: add PID file for debugging stale locks”
  1. lockfile: add PID file for debugging stale locksPaulo Casaretto via GitGitGadget, Dec 2, 2025
  2. D. Ben KnobleDec 2, 2025
  3. Torsten BögershausenDec 3, 2025
  4. Jeff KingDec 3, 2025
  5. Junio C HamanoDec 3, 2025
  6. Jeff KingDec 3, 2025
  7. Taylor BlauDec 3, 2025
  8. Patrick SteinhardtDec 5, 2025
  9. Jeff KingDec 5, 2025
  10. Taylor BlauDec 3, 2025
  11. lockfile: add PID file for debugging stale locksPaulo Casaretto via GitGitGadget, Dec 17, 2025
  12. Junio C HamanoDec 18, 2025
  13. Junio C HamanoDec 18, 2025
  14. Junio C HamanoDec 18, 2025
  15. Ben KnobleDec 18, 2025
  16. Patrick SteinhardtDec 18, 2025
  17. lockfile: add PID file for debugging stale locksPaulo Casaretto via GitGitGadget, Dec 24, 2025
  18. Junio C HamanoDec 25, 2025
  19. Jeff KingDec 27, 2025
  20. Patrick SteinhardtJan 5, 2026
  21. lockfile: add PID file for debugging stale locksPaulo Casaretto via GitGitGadget, Jan 7, 2026
  22. Junio C HamanoJan 8, 2026
  23. D. Ben KnobleJan 8, 2026
  24. lockfile: add PID file for debugging stale locksPaulo Casaretto via GitGitGadget, Jan 20, 2026
  25. Junio C HamanoJan 20, 2026
  26. Jeff KingJan 21, 2026
  27. Eric SunshineJan 21, 2026
  28. Johannes SixtJan 21, 2026
  29. Jeff KingJan 21, 2026
  30. Junio C HamanoJan 21, 2026
  31. Jeff KingJan 21, 2026
  32. Junio C HamanoJan 21, 2026
  33. lockfile: add PID file for debugging stale locksPaulo Casaretto via GitGitGadget, Jan 22, 2026
  34. Junio C HamanoJan 22, 2026
  35. Patrick SteinhardtFeb 6, 2026
  36. Junio C HamanoFeb 6, 2026

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.