Re: git log - crash and core dump

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Looks like I missed a lot of fun I'm sleeping ;)

The current repo is a product of our core crossplatform team, working
on Linux/MacOSX/Win32 environment. The Linux environment also
separates on Ubuntu/ArchLinux distros, and probably most of repo bugs
coming from ArchLinux, since other environments are stable in time. I
can't say exact git verison the bugs was introduced, but we have a
commits, dated by 0 secs since the Epoch and invalid Author fields
also. Also git fsck --full got the following stats on repo

Checking object directories: 100% (256/256), done.
error in commit 7eeb541987af8a589c6ebee53346c48a13142233: invalid
author/committer line - missing space before date
error in commit c23b0a487143e5d5d96cdc5354975e95114241ee: invalid
author/committer line - missing space before date
error in commit c7fa421863e073996b5d1ba6beb6001b9d146cba: invalid
author/committer line - missing space before date
error in commit 131155bd75c588bcd251b719c483d1d5bcb78504: invalid
author/committer line - missing space before date
error in commit 0888e7ffe6ae0aaf1b6d1ba67d05715487f88a52: invalid
author/committer line - missing space before date
error in commit 3cdeddd15c251a13fb3e79844ed3ea0e02cb611a: invalid
author/committer line - missing space before date
error in commit 21f9fe1565d89da845fc7080495c922103bacf24: invalid
author/committer line - missing space before date
error in commit f557d3427ba1bb33a1c1fd2c7936efa7e7c70281: invalid
author/committer line - missing space before date
error in commit c625943779c72b41b08b41730e56126b89cbb7b4: invalid
author/committer line - missing space before date
error in commit a83fc863991aae2bdad148a5897ed4315792dd82: invalid
author/committer line - missing space before date
error in commit 207321f773e695b2ae88884c34620bc663383f90: invalid
author/committer line - missing space before date
error in commit 67368e9eda9892acd6c6ebf03dd6f22b6de2db8a: invalid
author/committer line - missing space before date
error in commit 525a5d508a7f466a1339752e921517f4db8c4af6: invalid
author/committer line - missing space before date
error in commit 38215e27f74caa342e3353c4cd548fcf8c1df3dc: invalid
author/committer line - missing space before date
error in commit 1ee0167194eb34caca2c20ce5c74d062fc898718: invalid
author/committer line - missing space before date
error in commit 3274c469b981285f9a4d0b0a62afbb8f4d3e93ae: invalid
author/committer line - missing space before date
error in commit f37ab83f71ca93f42256e05efdd4244eb321efaf: invalid
author/committer line - missing space before date
error in commit 9bb6f7d63bb5a37b8afc3ae090bd6f34deb68633: invalid
author/committer line - missing space before date
Checking objects: 100% (9576/9576), done.

And I haven't find a way to fix without loosing a commits history, so
we left them as it is. I will check the approved patches and writeback
a little bit later. Thanks a lot for looking this

Ivan

2013/4/17 Junio C Hamano <gitster@xxxxxxxxx>:
> René Scharfe <rene.scharfe@xxxxxxxxxxxxxx> writes:
>
>> How about making split_ident_line() a bit friendlier be letting it
>> provide the epoch as default time stamp instead of NULL?
>
> Two knee-jerk concerns I have without going back to the callers:
>
>  * Would that "0" ever be given to the approxidate parser, which
>    rejects ancient dates in numbers-since-epoch format without @
>    prefix?
>
>  * Does any existing caller use the NULL as a sign to see the input
>    was without date and act on that information?
>
>
>> -- >8 --
>> Subject: ident: let split_ident_line() provide a default time stamp
>>
>> If a commit has a broken time stamp, split_ident_line() sets
>> date_begin, date_end, tz_begin and tz_end to NULL.  Not all callers
>> are prepared to handle that case and segfault.
>>
>> Instead of fixing them and having to be careful while implementing
>> the next caller, provide a string consisting of the number zero as
>> default value, representing the UNIX epoch.  That's the value that
>> git log showed before it was converted to use split_ident_line().
>>
>> Reported-by: Ivan Lyapunov <dront78@xxxxxxxxx>
>> Signed-off-by: Rene Scharfe <rene.scharfe@xxxxxxxxxxxxxx>
>> ---
>>  ident.c | 10 ++++++----
>>  1 file changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/ident.c b/ident.c
>> index 1c123e6..ee840f4 100644
>> --- a/ident.c
>> +++ b/ident.c
>> @@ -191,6 +191,8 @@ static void strbuf_addstr_without_crud(struct strbuf *sb, const char *src)
>>       sb->buf[sb->len] = '\0';
>>  }
>>
>> +static const char zero_string[] = "0";
>> +
>>  /*
>>   * Reverse of fmt_ident(); given an ident line, split the fields
>>   * to allow the caller to parse it.
>> @@ -254,10 +256,10 @@ int split_ident_line(struct ident_split *split, const char *line, int len)
>>       return 0;
>>
>>  person_only:
>> -     split->date_begin = NULL;
>> -     split->date_end = NULL;
>> -     split->tz_begin = NULL;
>> -     split->tz_end = NULL;
>> +     split->date_begin = zero_string;
>> +     split->date_end = zero_string + strlen(zero_string);
>> +     split->tz_begin = zero_string;
>> +     split->tz_end = zero_string + strlen(zero_string);
>>       return 0;
>>  }
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]