git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git-status segmentation fault in master / OS X
@ 2010-01-19 17:59 Jonathan del Strother
  2010-01-20  0:41 ` Jeff King
  0 siblings, 1 reply; 10+ messages in thread
From: Jonathan del Strother @ 2010-01-19 17:59 UTC (permalink / raw)
  To: Git Mailing List

Heya,
I've been running into a segmentation fault on running git status in
my repository while there are staged changes.  Bisecting suggests it
was introduced in:

commit 73d66323ac78c750ba42fef23b1cb8fd2110e023
Merge: 054d2fa 8740773
Author: Junio C Hamano <gitster@pobox.com>
Date:   Wed Jan 13 11:58:34 2010 -0800

    Merge branch 'nd/sparse'


The last commit from nd/sparse (8740773) is fine, so I guess it's a
bad merge...?


Here's the crash I get on 73d6632 :

Process:         git [93736]
Path:            /Users/jon/bin/git
Identifier:      git
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  zsh [26194]

Date/Time:       2010-01-19 17:58:01.306 +0000
OS Version:      Mac OS X 10.6.2 (10C540)
Report Version:  6

Interval Since Last Report:          349902 sec
Crashes Since Last Report:           15
Per-App Crashes Since Last Report:   11
Anonymous UUID:                      2563166D-332E-42BE-9D2D-0E741A6DB38A

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   libSystem.B.dylib             	0x00007fff81260a56 fnmatch1 + 442
1   libSystem.B.dylib             	0x00007fff8126088a fnmatch + 124
2   git                           	0x0000000100076cde excluded_from_list + 526
3   git                           	0x0000000100077877 excluded + 519
4   git                           	0x0000000100077ab5
read_directory_recursive + 453
5   git                           	0x0000000100077ff9 read_directory + 249
6   git                           	0x000000010007812b fill_directory + 219
7   git                           	0x00000001000b91a7 wt_status_collect + 599
8   git                           	0x0000000100017380 cmd_status + 288
(builtin-commit.c:1032)
9   git                           	0x0000000100001d1c
handle_internal_command + 188 (git.c:257)
10  git                           	0x0000000100001f5c main + 236 (git.c:446)
11  git                           	0x0000000100001814 start + 52

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000003  rbx: 0x0000000000000000  rcx:
0x00007fff5fbfe260  rdx: 0x0000000000000006
  rdi: 0x000000000000002a  rsi: 0x00007fff5fbfe480  rbp:
0x00007fff5fbfe1d0  rsp: 0x00007fff5fbfe010
   r8: 0x00007fff70276980   r9: 0x0000000100528720  r10:
0x0000000100528ae0  r11: 0x00007fff8120b860
  r12: 0x00007fff5fbfe480  r13: 0x0000000000000001  r14:
0x00007fff70276980  r15: 0x00007fff5fbfe260
  rip: 0x00007fff81260a56  rfl: 0x0000000000010246  cr2: 0x0000000000000000

Binary Images:
       0x100000000 -        0x1000f9fef +git ??? (???)
<FFFFCD11-3352-4216-B27D-2700D1A69326> /Users/jon/bin/git
       0x100179000 -        0x10018bfe7 +libz.1.dylib ??? (???)
<F450102F-273C-872E-0729-BD338777CA02> /opt/local/lib/libz.1.dylib
       0x10018f000 -        0x10028bff7 +libiconv.2.dylib ??? (???)
<A27D1D71-44A7-76A7-41EB-CC4BAC91E740> /opt/local/lib/libiconv.2.dylib
       0x100298000 -        0x1003acfe7 +libcrypto.0.9.8.dylib ???
(???) <D4E1B9E7-BE64-5054-F80A-B63296AFEAD4>
/opt/local/lib/libcrypto.0.9.8.dylib
       0x100410000 -        0x10044ffff +libssl.0.9.8.dylib ??? (???)
<4E8F5D81-1DFF-5CBD-361A-C37609B799A8>
/opt/local/lib/libssl.0.9.8.dylib
    0x7fff5fc00000 -     0x7fff5fc3bdef  dyld 132.1 (???)
<B633F790-4DDB-53CD-7ACF-2A3682BCEA9F> /usr/lib/dyld
    0x7fff811d2000 -     0x7fff81390ff7  libSystem.B.dylib ??? (???)
<526DD3E5-2A8B-4512-ED97-01B832369959> /usr/lib/libSystem.B.dylib
    0x7fff871c3000 -     0x7fff871c7ff7  libmathCommon.A.dylib ???
(???) <95718673-FEEE-B6ED-B127-BCDBDB60D4E5>
/usr/lib/system/libmathCommon.A.dylib
    0x7fffffe00000 -     0x7fffffe01fff  libSystem.B.dylib ??? (???)
<526DD3E5-2A8B-4512-ED97-01B832369959> /usr/lib/libSystem.B.dylib

Model: MacPro1,1, BootROM MP11.005C.B08, 4 processors, Dual-Core Intel
Xeon, 2 GHz, 3 GB, SMC 1.7f10
Graphics: ATI Radeon X1900 XT, ATY,RadeonX1900, PCIe, 512 MB
Memory Module: global_name
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x87),
Broadcom BCM43xx 1.0 (5.10.91.26)
Bluetooth: Version 2.2.4f3, 2 service, 1 devices, 1 incoming serial ports
Network Service: Ethernet 1, Ethernet, en0
PCI Card: ATY,RadeonX1900, Display, Slot-1
Serial ATA Device: WDC WD2500KS-00MJB0, 232.89 GB
Serial ATA Device: WDC WD2500JS-41SGB0, 232.89 GB
Parallel ATA Device: SONY    DVD RW DW-D150A
USB Device: Hub, 0x05ac  (Apple Inc.), 0x9130, 0xfd400000
USB Device: Keyboard Hub, 0x05ac  (Apple Inc.), 0x1006, 0xfd410000
USB Device: USB-PS/2 Optical Mouse, 0x046d  (Logitech Inc.), 0xc01e, 0xfd411000
USB Device: Apple Keyboard, 0x05ac  (Apple Inc.), 0x0221, 0xfd412000
USB Device: C-Media USB Headphone Set, 0x0d8c  (C-MEDIA ELECTRONICS
INC.), 0x000c, 0xfd430000
USB Device: Apple Cinema Display, 0x05ac  (Apple Inc.), 0x9222, 0xfd420000
USB Device: Hub, 0x05ac  (Apple Inc.), 0x9131, 0xfd300000
USB Device: Apple Cinema HD Display, 0x05ac  (Apple Inc.), 0x9223, 0xfd320000
USB Device: Bluetooth USB Host Controller, 0x05ac  (Apple Inc.),
0x8206, 0x5d200000
FireWire Device: built-in_hub, Up to 800 Mb/sec
FireWire Device: unknown_device, Unknown



Want me to do any more digging?

-Jonathan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: git-status segmentation fault in master / OS X
  2010-01-19 17:59 git-status segmentation fault in master / OS X Jonathan del Strother
@ 2010-01-20  0:41 ` Jeff King
  2010-01-20  0:56   ` Junio C Hamano
  0 siblings, 1 reply; 10+ messages in thread
From: Jeff King @ 2010-01-20  0:41 UTC (permalink / raw)
  To: Jonathan del Strother; +Cc: Git Mailing List

On Tue, Jan 19, 2010 at 05:59:51PM +0000, Jonathan del Strother wrote:

> I've been running into a segmentation fault on running git status in
> my repository while there are staged changes.

I can't reproduce it here. Is there anything else interesting about the
repo you can tell us besides that it has staged changes?

> Bisecting suggests it was introduced in:
> 
> commit 73d66323ac78c750ba42fef23b1cb8fd2110e023
> Merge: 054d2fa 8740773
> Author: Junio C Hamano <gitster@pobox.com>
> Date:   Wed Jan 13 11:58:34 2010 -0800
> 
>     Merge branch 'nd/sparse'
> 
> 
> The last commit from nd/sparse (8740773) is fine, so I guess it's a
> bad merge...?

Could be a bad interaction between commits on nd/sparse and whatever was
done since it had branched. You can try rebasing nd/sparse and bisecting
a linearised version, like this:

  bad_merge=73d66323
  # pretend we are on nd/sparse
  git checkout -b test $bad_merge^2
  # rebase onto what we merged onto
  git rebase $bad_merge^1
  # now bisect. what we have now is presumably
  # bad (though you should probably double check)
  # and from the previous bisect we know that
  # everything pre-merge is good
  git bisect start
  git bisect good $bad_merge^1
  git bisect bad

-Peff

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: git-status segmentation fault in master / OS X
  2010-01-20  0:41 ` Jeff King
@ 2010-01-20  0:56   ` Junio C Hamano
  2010-01-20 10:43     ` Jonathan del Strother
  0 siblings, 1 reply; 10+ messages in thread
From: Junio C Hamano @ 2010-01-20  0:56 UTC (permalink / raw)
  To: Jeff King; +Cc: Jonathan del Strother, Git Mailing List

Jeff King <peff@peff.net> writes:

> Could be a bad interaction between commits on nd/sparse and whatever was
> done since it had branched. You can try rebasing nd/sparse and bisecting
> a linearised version, like this:
>
>   bad_merge=73d66323
>   # pretend we are on nd/sparse
>   git checkout -b test $bad_merge^2
>   # rebase onto what we merged onto
>   git rebase $bad_merge^1

That is a very good suggestion.

You will get hit by a few conflicts during the rebase, but I managed to
arrive at the same tree as $bad_merge after running the rebase procedure
above.  Just for Jonathan's convenience, the result is at:

  git://repo.or.cz/alt-git.git junk-linearized-nd-sparse-for-bisection

I'll remove this after a few days.

>   # now bisect. what we have now is presumably
>   # bad (though you should probably double check)
>   # and from the previous bisect we know that
>   # everything pre-merge is good
>   git bisect start
>   git bisect good $bad_merge^1
>   git bisect bad

It would be interesting to hear the result of the test in the particular
repository Jonathan is seeing the problem with.  The issue didn't
reproduce for me, either but I only tried "having a staged change" case
without any more detailed set-up.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: git-status segmentation fault in master / OS X
  2010-01-20  0:56   ` Junio C Hamano
@ 2010-01-20 10:43     ` Jonathan del Strother
  2010-01-20 12:58       ` Nguyen Thai Ngoc Duy
  0 siblings, 1 reply; 10+ messages in thread
From: Jonathan del Strother @ 2010-01-20 10:43 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jeff King, Git Mailing List

2010/1/20 Junio C Hamano <gitster@pobox.com>:
> Jeff King <peff@peff.net> writes:
>
>> Could be a bad interaction between commits on nd/sparse and whatever was
>> done since it had branched. You can try rebasing nd/sparse and bisecting
>> a linearised version, like this:
>>
>>   bad_merge=73d66323
>>   # pretend we are on nd/sparse
>>   git checkout -b test $bad_merge^2
>>   # rebase onto what we merged onto
>>   git rebase $bad_merge^1
>
> That is a very good suggestion.
>
> You will get hit by a few conflicts during the rebase, but I managed to
> arrive at the same tree as $bad_merge after running the rebase procedure
> above.  Just for Jonathan's convenience, the result is at:
>
>  git://repo.or.cz/alt-git.git junk-linearized-nd-sparse-for-bisection
>
> I'll remove this after a few days.
>
>>   # now bisect. what we have now is presumably
>>   # bad (though you should probably double check)
>>   # and from the previous bisect we know that
>>   # everything pre-merge is good
>>   git bisect start
>>   git bisect good $bad_merge^1
>>   git bisect bad
>
> It would be interesting to hear the result of the test in the particular
> repository Jonathan is seeing the problem with.  The issue didn't
> reproduce for me, either but I only tried "having a staged change" case
> without any more detailed set-up.
>

OK, found some more interesting results from that.  The new bad commit is :

commit 66dce7bdb6742cb06433f8ef25441690b71c7995
Author: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date:   Thu Aug 20 20:47:01 2009 +0700

    Read .gitignore from index if it is skip-worktree


I still haven't been able to come up with a minimal test case, but gdb
gave me this:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x00000000000001c8
0x0000000100093e69 in excluded_1 (pathname=0x7fff5fbfd8b0
"shared/config/environments/.gitignore", pathlen=37,
basename=0x7fff5fbfd8cb ".gitignore", dtype=0x7fff5fbfd8a4,
el=0x7fff5fbfeb00) at dir.c:378
378					if (*exclude == '/')
(gdb) bt
#0  0x0000000100093e69 in excluded_1 (pathname=0x7fff5fbfd8b0
"shared/config/environments/.gitignore", pathlen=37,
basename=0x7fff5fbfd8cb ".gitignore", dtype=0x7fff5fbfd8a4,
el=0x7fff5fbfeb00) at dir.c:378
#1  0x0000000100093fd0 in excluded (dir=0x7fff5fbfeac0,
pathname=0x7fff5fbfd8b0 "shared/config/environments/.gitignore",
dtype_p=0x7fff5fbfd8a4) at dir.c:410
#2  0x0000000100094a10 in read_directory_recursive
(dir=0x7fff5fbfeac0, base=0x7fff5fbfdd20
"shared/config/environments/", baselen=27, check_only=0, simplify=0x0)
at dir.c:688
#3  0x0000000100094bfa in read_directory_recursive
(dir=0x7fff5fbfeac0, base=0x7fff5fbfe190 "shared/config/", baselen=14,
check_only=0, simplify=0x0) at dir.c:727
#4  0x0000000100094bfa in read_directory_recursive
(dir=0x7fff5fbfeac0, base=0x7fff5fbfe600 "shared/", baselen=7,
check_only=0, simplify=0x0) at dir.c:727
#5  0x0000000100094bfa in read_directory_recursive
(dir=0x7fff5fbfeac0, base=0x1000f48d0 "", baselen=0, check_only=0,
simplify=0x0) at dir.c:727
#6  0x0000000100094ecc in read_directory (dir=0x7fff5fbfeac0,
path=0x1000f48d0 "", len=0, pathspec=0x0) at dir.c:813
#7  0x0000000100093118 in fill_directory (dir=0x7fff5fbfeac0,
pathspec=0x0) at dir.c:70
#8  0x00000001000e85a7 in wt_status_collect_untracked
(s=0x7fff5fbfef80) at wt-status.c:346
#9  0x00000001000e86cc in wt_status_collect (s=0x7fff5fbfef80) at
wt-status.c:366
#10 0x000000010001e467 in cmd_status (argc=0, argv=0x7fff5fbff248,
prefix=0x0) at builtin-commit.c:1026
#11 0x0000000100001b52 in run_builtin (p=0x10013e3b0, argc=1,
argv=0x7fff5fbff248) at git.c:257
#12 0x0000000100001d04 in handle_internal_command (argc=1,
argv=0x7fff5fbff248) at git.c:401
#13 0x0000000100001e83 in main (argc=1, argv=0x7fff5fbff248) at git.c:482


"shared/config/environments/.gitignore" contained just
"_local_config.rb", no newline.  It seemed like adding or removing
characters from that file would 'fix' the problem, but changing them
wouldn't (ie the problem was always there when .gitignore was 16
bytes), but I'm not entirely sure because it continues to be a bit of
a Schrodinger bug.


One thing I wondered about from that commit - shouldn't the "buf =
xmalloc(size);" on dir.c:252 be "buf = xmalloc(size+1);" ?  I haven't
really looked at the program flow there, so may be wrong...

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: git-status segmentation fault in master / OS X
  2010-01-20 10:43     ` Jonathan del Strother
@ 2010-01-20 12:58       ` Nguyen Thai Ngoc Duy
  2010-01-20 14:09         ` [PATCH] Fix memory corruption when .gitignore does not end by \n Nguyễn Thái Ngọc Duy
  0 siblings, 1 reply; 10+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2010-01-20 12:58 UTC (permalink / raw)
  To: Jonathan del Strother; +Cc: Junio C Hamano, Jeff King, Git Mailing List

On 1/20/10, Jonathan del Strother <maillist@steelskies.com> wrote:
>  One thing I wondered about from that commit - shouldn't the "buf =
>  xmalloc(size);" on dir.c:252 be "buf = xmalloc(size+1);" ?  I haven't
>  really looked at the program flow there, so may be wrong...

You would also need to revert 66c3fa0 (Avoid writing to buffer in
add_excludes_from_file_1() - 2009-08-20) and see if it fixes the
problem. I think there is a potential memory corruption at "buf[i - (i
&& buf[i-1] == '\r')] = 0;". Don't know if it is the cause though.
-- 
Duy

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] Fix memory corruption when .gitignore does not end by \n
  2010-01-20 12:58       ` Nguyen Thai Ngoc Duy
@ 2010-01-20 14:09         ` Nguyễn Thái Ngọc Duy
  2010-01-20 19:51           ` Junio C Hamano
  0 siblings, 1 reply; 10+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-01-20 14:09 UTC (permalink / raw)
  To: git, Junio C Hamano, Jeff King, Jonathan del Strother
  Cc: Nguyễn Thái Ngọc Duy

Commit b5041c5 (Avoid writing to buffer in add_excludes_from_file_1())
tried not to append '\n' at the end because the next commit
may return a buffer that does not have extra space for that.

Unfortunately it left this assignment in the loop:

  buf[i - (i && buf[i-1] == '\r')] = 0;

that can corrupt memory if "buf" is not '\n' terminated. But even if
it does not corrupt memory, the last line would not be
NULL-terminated, leading to errors later inside add_exclude().

This patch fixes it by reverting the faulty commit and make
sure "buf" is always \n terminated.

While at it, free unused memory properly.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 This patch causes a crash for me. Not sure if it does for anybody else.

  diff --git a/t/t3001-ls-files-others-exclude.sh b/t/t3001-ls-files-others-exclude.sh
  index 6d2f2b6..e7efdb5 100755
  --- a/t/t3001-ls-files-others-exclude.sh
  +++ b/t/t3001-ls-files-others-exclude.sh
  @@ -57,7 +57,7 @@ expect
   echo '*.1
   /*.3
   !*.6' >.gitignore
  -echo '*.2
  +echo -n '*.2
   two/*.4
   !*.7
   *.8' >one/.gitignore

 dir.c |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/dir.c b/dir.c
index 1538ad5..67c3af6 100644
--- a/dir.c
+++ b/dir.c
@@ -242,6 +242,14 @@ int add_excludes_from_file_to_list(const char *fname,
 		if (!check_index ||
 		    (buf = read_skip_worktree_file_from_index(fname, &size)) == NULL)
 			return -1;
+		if (size == 0) {
+			free(buf);
+			return 0;
+		}
+		if (buf[size-1] != '\n') {
+			buf = xrealloc(buf, size+1);
+			buf[size++] = '\n';
+		}
 	}
 	else {
 		size = xsize_t(st.st_size);
@@ -249,19 +257,21 @@ int add_excludes_from_file_to_list(const char *fname,
 			close(fd);
 			return 0;
 		}
-		buf = xmalloc(size);
+		buf = xmalloc(size+1);
 		if (read_in_full(fd, buf, size) != size) {
+			free(buf);
 			close(fd);
 			return -1;
 		}
+		buf[size++] = '\n';
 		close(fd);
 	}
 
 	if (buf_p)
 		*buf_p = buf;
 	entry = buf;
-	for (i = 0; i <= size; i++) {
-		if (i == size || buf[i] == '\n') {
+	for (i = 0; i < size; i++) {
+		if (buf[i] == '\n') {
 			if (entry != buf + i && entry[0] != '#') {
 				buf[i - (i && buf[i-1] == '\r')] = 0;
 				add_exclude(entry, base, baselen, which);
-- 
1.6.6.181.g5ee6

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] Fix memory corruption when .gitignore does not end by \n
  2010-01-20 14:09         ` [PATCH] Fix memory corruption when .gitignore does not end by \n Nguyễn Thái Ngọc Duy
@ 2010-01-20 19:51           ` Junio C Hamano
  2010-01-21  1:38             ` Nguyen Thai Ngoc Duy
  0 siblings, 1 reply; 10+ messages in thread
From: Junio C Hamano @ 2010-01-20 19:51 UTC (permalink / raw)
  To: Nguyễn Thái Ngọc Duy
  Cc: git, Jeff King, Jonathan del Strother

Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:

>  This patch causes a crash for me. Not sure if it does for anybody else.

I am puzzled.  What do you mean by this?  If this patch makes the code
crash, then it is not a fix.  Is this meant as "Jonathan, can you try this
patch and tell me what happens, so that I can diagnose the issue better?"
patch?

Is it better/safer to revert the entire nd/sparse topic from the master in
the meantime before we know what is going on?

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Fix memory corruption when .gitignore does not end by \n
  2010-01-20 19:51           ` Junio C Hamano
@ 2010-01-21  1:38             ` Nguyen Thai Ngoc Duy
  2010-01-21  6:08               ` Jonathan del Strother
  2010-01-21  6:48               ` Junio C Hamano
  0 siblings, 2 replies; 10+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2010-01-21  1:38 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Jeff King, Jonathan del Strother

On 1/21/10, Junio C Hamano <gitster@pobox.com> wrote:
> Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>
>  >  This patch causes a crash for me. Not sure if it does for anybody else.
>
>
> I am puzzled.  What do you mean by this?  If this patch makes the code
>  crash, then it is not a fix.  Is this meant as "Jonathan, can you try this
>  patch and tell me what happens, so that I can diagnose the issue better?"
>  patch?

I mean the t3001 patch in comment part, which removes \n at the end of
.gitignore and crashes the unmodified git.

IOW I found a problem and this patch (not the t3001 one) should fix
it. Not sure if this causes Jonathan problem though.

>  Is it better/safer to revert the entire nd/sparse topic from the master in
>  the meantime before we know what is going on?

I would wait for Jonathan response. If this is not the cause, probably
safer to revert it.
-- 
Duy

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Fix memory corruption when .gitignore does not end by \n
  2010-01-21  1:38             ` Nguyen Thai Ngoc Duy
@ 2010-01-21  6:08               ` Jonathan del Strother
  2010-01-21  6:48               ` Junio C Hamano
  1 sibling, 0 replies; 10+ messages in thread
From: Jonathan del Strother @ 2010-01-21  6:08 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy; +Cc: Junio C Hamano, git, Jeff King

2010/1/21 Nguyen Thai Ngoc Duy <pclouds@gmail.com>:
> On 1/21/10, Junio C Hamano <gitster@pobox.com> wrote:
>> Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>>
>>  >  This patch causes a crash for me. Not sure if it does for anybody else.
>>
>>
>> I am puzzled.  What do you mean by this?  If this patch makes the code
>>  crash, then it is not a fix.  Is this meant as "Jonathan, can you try this
>>  patch and tell me what happens, so that I can diagnose the issue better?"
>>  patch?
>
> I mean the t3001 patch in comment part, which removes \n at the end of
> .gitignore and crashes the unmodified git.
>
> IOW I found a problem and this patch (not the t3001 one) should fix
> it. Not sure if this causes Jonathan problem though.
>
>>  Is it better/safer to revert the entire nd/sparse topic from the master in
>>  the meantime before we know what is going on?
>
> I would wait for Jonathan response. If this is not the cause, probably
> safer to revert it.
> --
> Duy
>

Think it's all fixed after applying this patch - at least, I can no
longer reproduce the crash, whereas I was able to make it fail ~90% of
the time before.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Fix memory corruption when .gitignore does not end by \n
  2010-01-21  1:38             ` Nguyen Thai Ngoc Duy
  2010-01-21  6:08               ` Jonathan del Strother
@ 2010-01-21  6:48               ` Junio C Hamano
  1 sibling, 0 replies; 10+ messages in thread
From: Junio C Hamano @ 2010-01-21  6:48 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy
  Cc: Junio C Hamano, git, Jeff King, Jonathan del Strother

Nguyen Thai Ngoc Duy <pclouds@gmail.com> writes:

> I mean the t3001 patch in comment part, which removes \n at the end of
> .gitignore and crashes the unmodified git.
>
> IOW I found a problem and this patch (not the t3001 one) should fix
> it. Not sure if this causes Jonathan problem though.

Ah, I see.  And a bug that leaves a string unterminated will exhibit
different symptoms depending on what garbage happens to follow it, so it
may not be universally reproducible.

Thanks; applied (and I saw Jonathan's Ack, as well).

Thanks, both.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-01-21  6:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-19 17:59 git-status segmentation fault in master / OS X Jonathan del Strother
2010-01-20  0:41 ` Jeff King
2010-01-20  0:56   ` Junio C Hamano
2010-01-20 10:43     ` Jonathan del Strother
2010-01-20 12:58       ` Nguyen Thai Ngoc Duy
2010-01-20 14:09         ` [PATCH] Fix memory corruption when .gitignore does not end by \n Nguyễn Thái Ngọc Duy
2010-01-20 19:51           ` Junio C Hamano
2010-01-21  1:38             ` Nguyen Thai Ngoc Duy
2010-01-21  6:08               ` Jonathan del Strother
2010-01-21  6:48               ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).