Hello, With git 2.23.0 I have: uwe@taurus:~/tmp/rangediff-segfault$ git init Initialized empty Git repository in /home/uwe/tmp/rangediff-segfault/.git/ uwe@taurus:~/tmp/rangediff-segfault$ echo root > root uwe@taurus:~/tmp/rangediff-segfault$ git add root uwe@taurus:~/tmp/rangediff-segfault$ git commit -m root [master (root-commit) b0feddb2dee8] root 1 file changed, 1 insertion(+) create mode 100644 root uwe@taurus:~/tmp/rangediff-segfault$ echo content > file uwe@taurus:~/tmp/rangediff-segfault$ chmod +x file uwe@taurus:~/tmp/rangediff-segfault$ git add file uwe@taurus:~/tmp/rangediff-segfault$ git commit -m file [master 45b547c57acd] file 1 file changed, 1 insertion(+) create mode 100755 file uwe@taurus:~/tmp/rangediff-segfault$ chmod -x file uwe@taurus:~/tmp/rangediff-segfault$ git add file uwe@taurus:~/tmp/rangediff-segfault$ git commit -m 'chmod -x' [master eaa5d3b98caa] chmod -x 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 file uwe@taurus:~/tmp/rangediff-segfault$ git range-diff @~2..@~ @~2.. Segmentation fault (core dumped) Bisecting points to b66885a30cb84fc61986bc4eea805a31fdbea79a, current master (b744c3af07a15aaeb1b82fab689995fd5528f120) segfaults in the same way. This is somehow similar to https://public-inbox.org/git/20190923101929.GA18205@xxxxxxxxxxxxxxx/ but the patch by Johannes Schindelin sent in https://public-inbox.org/git/pull.373.git.gitgitgadget@xxxxxxxxx/ doesn't help me. For me the segfault also happens in strbuf_addstr(&buf, patch.new_name); with patch.new_name being NULL. The matching backtrace and patch object looks as follows: (gdb) bt #0 __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:65 #1 0x0000555cc448949c in strbuf_addstr (s=<optimized out>, sb=0x7ffcd1d9ef00) at strbuf.h:292 #2 read_patches (range=range@entry=0x555cc5dc2b70 "@~2..", list=list@entry=0x7ffcd1d9f280) at range-diff.c:126 #3 0x0000555cc44898a8 in show_range_diff (range1=0x555cc5dc2b50 "@~2..@~", range2=0x555cc5dc2b70 "@~2..", creation_factor=60, dual_color=1, diffopt=diffopt@entry=0x7ffcd1d9f680) at range-diff.c:507 #4 0x0000555cc4397aa6 in cmd_range_diff (argc=<optimized out>, argv=<optimized out>, prefix=<optimized out>) at builtin/range-diff.c:80 #5 0x0000555cc4328494 in run_builtin (argv=<optimized out>, argc=<optimized out>, p=<optimized out>) at git.c:445 #6 handle_builtin (argc=<optimized out>, argv=<optimized out>) at git.c:674 #7 0x0000555cc4329554 in run_argv (argv=0x7ffcd1d9f9e0, argcp=0x7ffcd1d9f9ec) at git.c:741 #8 cmd_main (argc=<optimized out>, argv=<optimized out>) at git.c:872 #9 0x0000555cc432803a in main (argc=4, argv=0x7ffcd1d9fc78) at common-main.c:52 (gdb) up 2 #2 read_patches (range=range@entry=0x555cc5dc2b70 "@~2..", list=list@entry=0x7ffcd1d9f280) at range-diff.c:126 126 range-diff.c: No such file or directory. (gdb) print patch $1 = {new_name = 0x0, old_name = 0x0, def_name = 0x555cc5dc98c0 "file", old_mode = 33261, new_mode = 33188, is_new = 0, is_delete = 0, rejected = 0, ws_rule = 0, lines_added = 0, lines_deleted = 0, score = 0, extension_linenr = 0, is_toplevel_relative = 0, inaccurate_eof = 0, is_binary = 0, is_copy = 0, is_rename = 0, recount = 0, conflicted_threeway = 0, direct_to_threeway = 0, crlf_in_old = 0, fragments = 0x0, result = 0x0, resultsize = 0, old_oid_prefix = '\000' <repeats 64 times>, new_oid_prefix = '\000' <repeats 64 times>, next = 0x0, threeway_stage = {{ hash = '\000' <repeats 31 times>}, {hash = '\000' <repeats 31 times>}, { hash = '\000' <repeats 31 times>}}} I guess you are able to work out the details with this information. If you need more input, please Cc: me on replies. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ |