What did you do before the bug happened? I have a git repository which is stored in a 'Seafile' shared folder[0]. As I noticed, 'Seafile' seems to not correctly sync hidden files/dotfiles, so after modifying the git repository on one host, the ".git" directory in the Seafile replica on the other host is inconsistent: Specifically, it seems to be missing a subset of the files in '.git/objects'. 'git fsck' complains about various missing blobs, dangling commits, dangling trees, broken links, and notably also "error: HEAD: invalid sha1 pointer [...]". On this - obviously corrupted - repository, most git commands report "fatal: bad object HEAD". In contrast, 'git diff' crashes: $ git status fatal: bad object HEAD $ git log fatal: bad object HEAD $ git diff Segmentation fault (core dumped) $ This is the stacktrace for this crash (gdb output): ----- Starting program: /usr/bin/git diff Downloading separate debug info for system-supplied DSO at 0x7ffff7fc8000 [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". [Detaching after fork from child process 16789] Program received signal SIGSEGV, Segmentation fault. 0x00005555556ff6ac in diff_add_if_missing (r=0x555555966ac0 <the_repo>, to_fetch=0x7fffffffce10, filespec=0x555555975) at /usr/src/debug/git/git-2.42.0/diff.c:6895 6895 if (filespec && filespec->oid_valid && (gdb) bt #0 0x00005555556ff6ac in diff_add_if_missing (r=0x555555966ac0 <the_repo>, to_fetch=0x7fffffffce10, filespec=0x555555975) at /usr/src/debug/git/git-2.42.0/diff.c:6895 #1 0x00005555556ff7aa in diff_queued_diff_prefetch (repository=0x555555966ac0 <the_repo>) at /usr/src/debug/git/git-2.42.0/diff.c:6911 #2 0x00005555556f5e74 in diff_populate_filespec (r=0x555555966ac0 <the_repo>, s=0x555555977660, options=0x7fffffffcfe0) at /usr/src/debug/git/git-2.42.0/diff.c:4184 #3 0x00005555556fee70 in diff_filespec_check_stat_unmatch (r=0x555555966ac0 <the_repo>, p=p@entry=0x5555559755e0) at /usr/src/debug/git/git-2.42.0/diff.c:6839 #4 0x0000555555709560 in diffcore_skip_stat_unmatch (diffopt=0x7fffffffdb20) at /usr/src/debug/git/git-2.42.0/diff.c:6857 #5 diffcore_std (options=<optimized out>) at /usr/src/debug/git/git-2.42.0/diff.c:6946 #6 0x00005555556ee59c in run_diff_files (revs=<optimized out>, option=<optimized out>) at /usr/src/debug/git/git-2.42.0/diff-lib.c:272 #7 0x00005555555ba95b in builtin_diff_files (argv=<optimized out>, argc=<optimized out>, revs=<optimized out>) at builtin/diff.c:293 #8 cmd_diff (argc=1, argv=0x7fffffffe7a0, prefix=<optimized out>) at builtin/diff.c:586 #9 0x00005555555767f4 in run_builtin (argv=0x7fffffffe7a0, argc=1, p=0x555555938db0 <commands.lto_priv+816>) at /usr/src/debug/git/git-2.42.0/git.c:469 #10 handle_builtin (argc=1, argv=0x7fffffffe7a0) at /usr/src/debug/git/git-2.42.0/git.c:723 #11 0x0000555555576dab in run_argv (argcp=0x7fffffffe4ec, argv=0x7fffffffe510) at /usr/src/debug/git/git-2.42.0/git.c:787 #12 0x00005555555727e3 in cmd_main (argv=<optimized out>, argc=<optimized out>) at /usr/src/debug/git/git-2.42.0/git.c:922 #13 main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/git/git-2.42.0/common-main.c:62 (gdb) print filespec->oid_valid Cannot access memory at address 0x555555975 (gdb) ----- What did you expect to happen? 'git diff' should not crash/perform invalid memory accesses on a corrupted repository. [System Info] git version: git version 2.42.0 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 6.5.5-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 23 Sep 2023 22:55:13 +0000 x86_64 compiler info: gnuc: 13.2 libc info: glibc: 2.38 $SHELL (typically, interactive shell): /bin/bash [Enabled Hooks] [0] I'm aware that this is a bad idea in the first place and a red flag about the underlying workflow :).