Re: [PATCH 0/5] Revamping "git status"
- From
Thomas Rast <trast@student.ethz.ch>
- Date
- Aug 5, 2009, 09:49 UTC
- Message-ID
- <200908051149.40980.trast@student.ethz.ch>
- In-Reply-To
- <1249463746-21538-1-git-send-email-gitster@pobox.com>
Junio C Hamano wrote:
Show 8 quoted lines
> > 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