Junio C Hamano wrote: > > Junio C Hamano (5): > diff-index: report unmerged new entries > diff-index: keep the original index intact > wt-status.c: rework the way changes to the index and work tree are > summarized > status: show worktree status of conflicted paths separately > shortstatus: a new command I was quite eager to try this, mainly for 4/5, and I still had the testing repository from the last thread around: $ git ls-files -s 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 1 foo 100644 d00491fd7e5bb6fa28c517a0bb32b8b506539d4d 2 foo Here we go! $ git status # On branch master Segmentation fault Uh oh. So gdb it is then... # On branch master Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7353844 in strcmp () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff7353844 in strcmp () from /lib64/libc.so.6 #1 0x00000000004cc577 in unmerged_mask (path=Cannot access memory at address 0xfffff070 ) at wt-status.c:241 Backtrace stopped: previous frame inner to this frame (corrupt stack?) ... or maybe not. valgrind is slightly more helpful: ==29421== Invalid read of size 1 ==29421== at 0x4C26101: strcmp (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so) ==29421== by 0x4CC576: unmerged_mask (wt-status.c:241) ==29421== by 0x4CC6AA: wt_status_collect_updated_cb (wt-status.c:275) ==29421== by 0x484172: diff_flush (diff.c:3337) ==29421== by 0x47A0E5: run_diff_index (diff-lib.c:445) ==29421== by 0x4CC804: wt_status_collect_changes_index (wt-status.c:306) ==29421== by 0x4CC922: wt_status_collect_changes (wt-status.c:340) ==29421== by 0x4CD1A0: wt_status_print (wt-status.c:561) ==29421== by 0x41BFBD: run_status (builtin-commit.c:369) ==29421== by 0x41D97F: cmd_status (builtin-commit.c:927) ==29421== by 0x4048C2: run_builtin (git.c:246) ==29421== by 0x404A4D: handle_internal_command (git.c:394) ==29421== Address 0x48 is not stack'd, malloc'd or (recently) free'd ==29421== ==29421== Process terminating with default action of signal 11 (SIGSEGV) ==29421== Access not within mapped region at address 0x48 ==29421== at 0x4C26101: strcmp (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so) ==29421== by 0x4CC576: unmerged_mask (wt-status.c:241) ==29421== by 0x4CC6AA: wt_status_collect_updated_cb (wt-status.c:275) ==29421== by 0x484172: diff_flush (diff.c:3337) ==29421== by 0x47A0E5: run_diff_index (diff-lib.c:445) ==29421== by 0x4CC804: wt_status_collect_changes_index (wt-status.c:306) ==29421== by 0x4CC922: wt_status_collect_changes (wt-status.c:340) ==29421== by 0x4CD1A0: wt_status_print (wt-status.c:561) ==29421== by 0x41BFBD: run_status (builtin-commit.c:369) ==29421== by 0x41D97F: cmd_status (builtin-commit.c:927) ==29421== by 0x4048C2: run_builtin (git.c:246) ==29421== by 0x404A4D: handle_internal_command (git.c:394) I also tried finding out which exact commit was causing this, but 4/5 still segfaults and 1-3 don't even compile: builtin-commit.c: In function ‘show_unmerged’: builtin-commit.c:827: error: dereferencing pointer to incomplete type builtin-commit.c: In function ‘show_status’: builtin-commit.c:854: error: dereferencing pointer to incomplete type [etc] These are referring to use of a 'struct wt_status_change_data *', but the struct declaration is only in 4/5. Am I missing something? -- Thomas Rast trast@{inf,student}.ethz.ch
Attachment:
signature.asc
Description: This is a digitally signed message part.