Subject: Re: git rebase --continue segfault

From: Phillip Wood <[email-masked]>
Date: Mon, 18 May 2026 11:02:48 +0100

Hi Alex

On 17/05/2026 10:19, Alex Naidenkov wrote:
> Hi, ive encountered on segfault when ran `git rebase --continue`. 
> Hopefully this would help
> 
> - i was in the middle of big rebase
> 
> - entered pin for signing commit
> - segfault happened

Thanks for reporting this, if you run

	ls -l "$(git rev-parse --git-path objects/pack)"/*.pack

How many pack files does it show? If there is only a single pack file 
with a modification time matching when the rebase failed then I suspect 
you've been bitten by the bug fixed in [1] which corrupted my repository 
over the weekend (ironically I was rebasing my local git to include that 
bug fix, but accidentally started the rebase with a build including that 
bug). "git rebase" runs "git commit" to reword commits and commit 
conflict resolutions and each time "git commit" calls 
run_auto_maintenance() so with that bug it stands a good chance of 
starting parallel repacks.

Hopefully there will be a 2.54.1 release containing the fix soon

Phillip

[1] 
https://lore.kernel.org/[email-masked]

> ```
> 
> Debuginfo Build ID: d98c557aaa4baa2e6da8a12cf5a76d241c5af104
> ```
> 
> ```
> 
> gef➤  bt
> #0  repo_parse_tree_gently (r=0x557e86b43780 <the_repo.lto_priv>, 
> item=0x0, quiet_on_missing=0x0) at /usr/src/debug/git/git/tree.c:193
> #1  0x0000557e869161bd in repo_parse_tree (r=<optimized out>, 
> item=<optimized out>) at /usr/src/debug/git/git/tree.h:28
> #2  collect_merge_info (opt=0x557e9bf793b0, merge_base=<optimized out>, 
> side1=<optimized out>, side2=<optimized out>) at /usr/src/debug/git/git/ 
> merge-ort.c:1745
> #3  merge_ort_nonrecursive_internal (opt=opt@entry=0x7ffe20ae9eb0, 
> merge_base=<optimized out>, merge_base@entry=0x557e9bf793b0, 
> side1=side1@entry=0x557e9bf79430, side2=<optimized out>,
>      side2@entry=0x0, result=result@entry=0x7ffe20ae9e80) at /usr/src/ 
> debug/git/git/merge-ort.c:5256
> #4  0x0000557e8691a6b8 in merge_incore_nonrecursive (opt=0x7ffe20ae9eb0, 
> merge_base=0x557e9bf793b0, side1=0x557e9bf79430, side2=0x0, 
> result=0x7ffe20ae9e80)
>      at /usr/src/debug/git/git/merge-ort.c:5419
> #5  0x0000557e869e0e8a in do_recursive_merge (r=r@entry=0x557e86b43780 
> <the_repo.lto_priv>, base=base@entry=0x557e9bf8b800, 
> next=next@entry=0x557e9bf8b850,
>      base_label=base_label@entry=0x557e9bf627e0 "parent of db33c0f 
> (fix)", next_label=next_label@entry=0x557e9bfab130 "db33c0f (fix)", 
> head=head@entry=0x7ffe20aea160,
>      msgbuf=0x557e9bf1b710, opts=0x7ffe20aeb990) at /usr/src/debug/git/ 
> git/sequencer.c:782
> #6  0x0000557e869e355e in do_pick_commit (r=0x557e86b43780 
> <the_repo.lto_priv>, item=<optimized out>, opts=0x7ffe20aeb990, 
> final_fixup=0x0, check_todo=0x7ffe20aea35c)
>      at /usr/src/debug/git/git/sequencer.c:2445
> #7  0x0000557e869ebe75 in pick_one_commit (r=<optimized out>, 
> todo_list=0x7ffe20aeb330, opts=<optimized out>, 
> check_todo=0x7ffe20aea35c, reschedule=<synthetic pointer>)
>      at /usr/src/debug/git/git/sequencer.c:4921
> #8  pick_commits (r=0x557e86b43780 <the_repo.lto_priv>, 
> todo_list=<optimized out>, opts=0x7ffe20aeb990) at /usr/src/debug/git/ 
> git/sequencer.c:5030
> #9  0x0000557e869ef336 in sequencer_continue (r=<optimized out>, 
> opts=<optimized out>) at /usr/src/debug/git/git/sequencer.c:5487
> #10 0x0000557e867d536e in run_sequencer_rebase (opts=0x7ffe20aeb7a0) at 
> builtin/rebase.c:376
> #11 run_specific_rebase (opts=0x7ffe20aeb7a0) at builtin/rebase.c:755
> #12 cmd_rebase (argc=<optimized out>, argv=<optimized out>, 
> prefix=<optimized out>, repo=<optimized out>) at builtin/rebase.c:1910
> #13 0x0000557e866e9e65 in run_builtin (p=0x557e86b35530 
> <commands.lto_priv+2352>, argc=<optimized out>, argv=<optimized out>, 
> repo=0x557e86b43780 <the_repo.lto_priv>)
>      at /usr/src/debug/git/git/git.c:506
> #14 handle_builtin (args=args@entry=0x7ffe20aed760) at /usr/src/debug/ 
> git/git/git.c:780
> #15 0x0000557e866eb30c in run_argv (args=0x7ffe20aed760) at /usr/src/ 
> debug/git/git/git.c:863
> #16 cmd_main (argc=<optimized out>, argv=<optimized out>) at /usr/src/ 
> debug/git/git/git.c:984
> #17 0x0000557e866e77e4 in main (argc=0x3, argv=0x7ffe20aeda58) at /usr/ 
> src/debug/git/git/common-main.c:9
> 
> ```
> ```
> 
> [System Info]
> git version:
> git version 2.54.0
> cpu: x86_64
> built from commit: 94f057755b7941b321fd11fec1b2e3ca5313a4e0
> sizeof-long: 8
> sizeof-size_t: 8
> shell-path: /bin/sh
> rust: enabled
> gettext: enabled
> libcurl: 8.19.0
> OpenSSL: OpenSSL 3.6.2 7 Apr 2026
> zlib-ng: 2.3.3
> SHA-1: SHA1_DC
> SHA-256: SHA256_BLK
> default-ref-format: files
> default-hash: sha1
> uname: Linux 7.0.5-arch1-1 #1 SMP PREEMPT_DYNAMIC Fri, 08 May 2026 
> 09:29:23 +0000 x86_64
> compiler info: gnuc: 15.2
> libc info: glibc: 2.43
> $SHELL (typically, interactive shell): /usr/bin/zsh
> 
> 
> [Enabled Hooks]
> pre-commit
> ```
> 
>