Re: Re: Re: Homebrew and Git

2016-09-22 Thread Jeff King
On Thu, Sep 22, 2016 at 08:57:45AM -0700, Stefan Beller wrote:

> On Thu, Sep 22, 2016 at 2:23 AM, Jonas Thiel  wrote:
> > Sorry for my late reply. Thanks for your support -- I really appreciate 
> > that.
> >
> > @Jeff: Unfortunately, I do not know how to implement the patch you 
> > provided. Can you explain how to do that?
> 
> I think this should do:
> 
> git clone https://github.com/git/git
> cd git
> # get the email
> wget 
> http://public-inbox.org/git/20160921084841.phq7cfbagi5k7...@sigill.intra.peff.net/raw
> # apply patch:
> git am raw

I publish my topic branches via git, too, so it may be easier to replace
these steps with:

  git clone -b jk/ident-canonname https://github.com/peff/git
  cd git

> make
> make install

After installing, you probably want to do:

  PATH=/path/to/git/bin-wrappers:$PATH

to run the new git (and make sure that any git sub-commands that are run
come from the built version, not the rest of the system).

I have access to an OS X system, but if I understand the bug correctly,
reproducing it may involve re-setting the system hostname, which is not
something I'll be able to do. But I'll give it a shot.

-Peff


Re: Re: Re: Homebrew and Git

2016-09-22 Thread Stefan Beller
On Thu, Sep 22, 2016 at 2:23 AM, Jonas Thiel <jonas.liersch...@gmx.de> wrote:
> Sorry for my late reply. Thanks for your support -- I really appreciate that.
>
> @Jeff: Unfortunately, I do not know how to implement the patch you provided. 
> Can you explain how to do that?

I think this should do:


git clone https://github.com/git/git
cd git
# get the email
wget 
http://public-inbox.org/git/20160921084841.phq7cfbagi5k7...@sigill.intra.peff.net/raw
# apply patch:
git am raw
make
make install

>
> Thanks and best regards,
> Jonas
>
>> Gesendet: Mittwoch, 21. September 2016 um 10:48 Uhr
>> Von: "Jeff King" <p...@peff.net>
>> An: "John Keeping" <j...@keeping.me.uk>
>> Cc: "Heiko Voigt" <hvo...@hvoigt.net>, "Jonas Thiel" 
>> <jonas.liersch...@gmx.de>, git@vger.kernel.org
>> Betreff: Re: Re: Homebrew and Git
>>
>> On Tue, Sep 20, 2016 at 08:15:55PM +0100, John Keeping wrote:
>>
>> > > BTW, here is the callstack inlined from the crashreport:
>> > >
>> > > bsystem_platform.dylib0x7fff840db41c 
>> > > _platform_strchr$VARIANT$Haswell + 28
>> > > 1   git   0x00010ba1d3f4 
>> > > ident_default_email + 801
>> > > 2   git   0x00010ba1d68f fmt_ident + 
>> > > 66
>> > > 3   git   0x00010ba4b495 
>> > > files_log_ref_write + 175
>> > > 4   git   0x00010ba4b0a6 
>> > > commit_ref_update + 106
>> > > 5   git   0x00010ba4c3a8 
>> > > ref_transaction_commit + 468
>> > > 6   git   0x00010b994dd8 
>> > > s_update_ref + 271
>> > > 7   git   0x00010b994556 fetch_refs 
>> > > + 1969
>> > > 8   git   0x00010b9935f2 fetch_one + 
>> > > 1913
>> > > 9   git   0x00010b992bc4 cmd_fetch + 
>> > > 549
>> > > 10  git   0x00010b9666c4 
>> > > handle_builtin + 478
>> > > 11  git   0x00010b96602f main + 376
>> > > 12  libdyld.dylib 0x7fff834ef5ad start + 1
>> > >
>> > > Maybe someone else has an idea what might be causing this...
>> >
>> > The only strchr I can see that could be called here is in
>> > canonical_name(), where it's called with addrinfo::ai_canonname.
>>
>> There's one in add_domainname(), too, but it can never be NULL (we could
>> walk off the end of the buffer, but only if gethostname() lies to us
>> about its result code, which seems unlikely). So I agree it's probably
>> the call in canonical_name().
>>
>> > Searching for OS X and ai_canonname, leads me straight back to this
>> > list, although 7 years ago!  I think ident.c needs a fix similar to
>> > commit 3e8a00a (daemon.c: fix segfault on OS X, 2009-04-27); from the
>> > commit message there:
>> >
>> > On OS X (and maybe other unices), getaddrinfo(3) returns NULL
>> > in the ai_canonname field if it's called with an IP address for
>> > the hostname.
>>
>> Interesting. We are already prepared for failure from getaddrinfo()
>> here, so probably:
>>
>> diff --git a/ident.c b/ident.c
>> index e20a772..d17b5bd 100644
>> --- a/ident.c
>> +++ b/ident.c
>> @@ -101,7 +101,7 @@ static int canonical_name(const char *host, struct 
>> strbuf *out)
>>   memset (, '\0', sizeof (hints));
>>   hints.ai_flags = AI_CANONNAME;
>>   if (!getaddrinfo(host, NULL, , )) {
>> - if (ai && strchr(ai->ai_canonname, '.')) {
>> + if (ai && ai->ai_canonname && strchr(ai->ai_canonname, '.')) {
>>   strbuf_addstr(out, ai->ai_canonname);
>>   status = 0;
>>   }
>>
>> would be sufficient. Jonas, can you see if that patch helps?
>>
>> -Peff
>>


Aw: Re: Re: Homebrew and Git

2016-09-22 Thread Jonas Thiel
Sorry for my late reply. Thanks for your support -- I really appreciate that. 

@Jeff: Unfortunately, I do not know how to implement the patch you provided. 
Can you explain how to do that? 

Thanks and best regards,
Jonas

> Gesendet: Mittwoch, 21. September 2016 um 10:48 Uhr
> Von: "Jeff King" <p...@peff.net>
> An: "John Keeping" <j...@keeping.me.uk>
> Cc: "Heiko Voigt" <hvo...@hvoigt.net>, "Jonas Thiel" 
> <jonas.liersch...@gmx.de>, git@vger.kernel.org
> Betreff: Re: Re: Homebrew and Git
>
> On Tue, Sep 20, 2016 at 08:15:55PM +0100, John Keeping wrote:
> 
> > > BTW, here is the callstack inlined from the crashreport:
> > > 
> > > bsystem_platform.dylib0x7fff840db41c 
> > > _platform_strchr$VARIANT$Haswell + 28
> > > 1   git   0x00010ba1d3f4 
> > > ident_default_email + 801
> > > 2   git   0x00010ba1d68f fmt_ident + 
> > > 66
> > > 3   git   0x00010ba4b495 
> > > files_log_ref_write + 175
> > > 4   git   0x00010ba4b0a6 
> > > commit_ref_update + 106
> > > 5   git   0x00010ba4c3a8 
> > > ref_transaction_commit + 468
> > > 6   git   0x00010b994dd8 s_update_ref 
> > > + 271
> > > 7   git   0x00010b994556 fetch_refs + 
> > > 1969
> > > 8   git   0x00010b9935f2 fetch_one + 
> > > 1913
> > > 9   git   0x00010b992bc4 cmd_fetch + 
> > > 549
> > > 10  git   0x00010b9666c4 
> > > handle_builtin + 478
> > > 11  git   0x00010b96602f main + 376
> > > 12  libdyld.dylib 0x7fff834ef5ad start + 1
> > > 
> > > Maybe someone else has an idea what might be causing this...
> > 
> > The only strchr I can see that could be called here is in
> > canonical_name(), where it's called with addrinfo::ai_canonname.
> 
> There's one in add_domainname(), too, but it can never be NULL (we could
> walk off the end of the buffer, but only if gethostname() lies to us
> about its result code, which seems unlikely). So I agree it's probably
> the call in canonical_name().
> 
> > Searching for OS X and ai_canonname, leads me straight back to this
> > list, although 7 years ago!  I think ident.c needs a fix similar to
> > commit 3e8a00a (daemon.c: fix segfault on OS X, 2009-04-27); from the
> > commit message there:
> > 
> > On OS X (and maybe other unices), getaddrinfo(3) returns NULL
> > in the ai_canonname field if it's called with an IP address for
> > the hostname.
> 
> Interesting. We are already prepared for failure from getaddrinfo()
> here, so probably:
> 
> diff --git a/ident.c b/ident.c
> index e20a772..d17b5bd 100644
> --- a/ident.c
> +++ b/ident.c
> @@ -101,7 +101,7 @@ static int canonical_name(const char *host, struct strbuf 
> *out)
>   memset (, '\0', sizeof (hints));
>   hints.ai_flags = AI_CANONNAME;
>   if (!getaddrinfo(host, NULL, , )) {
> - if (ai && strchr(ai->ai_canonname, '.')) {
> + if (ai && ai->ai_canonname && strchr(ai->ai_canonname, '.')) {
>   strbuf_addstr(out, ai->ai_canonname);
>   status = 0;
>   }
> 
> would be sufficient. Jonas, can you see if that patch helps?
> 
> -Peff
> 


Re: Re: Homebrew and Git

2016-09-21 Thread Jeff King
On Tue, Sep 20, 2016 at 08:15:55PM +0100, John Keeping wrote:

> > BTW, here is the callstack inlined from the crashreport:
> > 
> > bsystem_platform.dylib  0x7fff840db41c 
> > _platform_strchr$VARIANT$Haswell + 28
> > 1   git 0x00010ba1d3f4 ident_default_email 
> > + 801
> > 2   git 0x00010ba1d68f fmt_ident + 66
> > 3   git 0x00010ba4b495 files_log_ref_write 
> > + 175
> > 4   git 0x00010ba4b0a6 commit_ref_update + 
> > 106
> > 5   git 0x00010ba4c3a8 
> > ref_transaction_commit + 468
> > 6   git 0x00010b994dd8 s_update_ref + 271
> > 7   git 0x00010b994556 fetch_refs + 1969
> > 8   git 0x00010b9935f2 fetch_one + 1913
> > 9   git 0x00010b992bc4 cmd_fetch + 549
> > 10  git 0x00010b9666c4 handle_builtin + 478
> > 11  git 0x00010b96602f main + 376
> > 12  libdyld.dylib   0x7fff834ef5ad start + 1
> > 
> > Maybe someone else has an idea what might be causing this...
> 
> The only strchr I can see that could be called here is in
> canonical_name(), where it's called with addrinfo::ai_canonname.

There's one in add_domainname(), too, but it can never be NULL (we could
walk off the end of the buffer, but only if gethostname() lies to us
about its result code, which seems unlikely). So I agree it's probably
the call in canonical_name().

> Searching for OS X and ai_canonname, leads me straight back to this
> list, although 7 years ago!  I think ident.c needs a fix similar to
> commit 3e8a00a (daemon.c: fix segfault on OS X, 2009-04-27); from the
> commit message there:
> 
>   On OS X (and maybe other unices), getaddrinfo(3) returns NULL
>   in the ai_canonname field if it's called with an IP address for
>   the hostname.

Interesting. We are already prepared for failure from getaddrinfo()
here, so probably:

diff --git a/ident.c b/ident.c
index e20a772..d17b5bd 100644
--- a/ident.c
+++ b/ident.c
@@ -101,7 +101,7 @@ static int canonical_name(const char *host, struct strbuf 
*out)
memset (, '\0', sizeof (hints));
hints.ai_flags = AI_CANONNAME;
if (!getaddrinfo(host, NULL, , )) {
-   if (ai && strchr(ai->ai_canonname, '.')) {
+   if (ai && ai->ai_canonname && strchr(ai->ai_canonname, '.')) {
strbuf_addstr(out, ai->ai_canonname);
status = 0;
}

would be sufficient. Jonas, can you see if that patch helps?

-Peff


Re: Re: Homebrew and Git

2016-09-20 Thread John Keeping
On Tue, Sep 20, 2016 at 01:07:00PM +0200, Heiko Voigt wrote:
> On Tue, Sep 20, 2016 at 01:02:28PM +0200, Heiko Voigt wrote:
> > Hi,
> > 
> > On Sun, Sep 18, 2016 at 05:50:28PM +0200, Jonas Thiel wrote:
> > > A while ago I have described my problem with Homebrew at the following
> > > GitHub channel
> > > (https://github.com/Homebrew/homebrew-core/issues/2970). In the
> > > meanwhile, I believe that I my problem with Homebrew is based on an
> > > issues with my Git. I have found the attached Git Crash reports on my
> > > Mac and because I am not familiar with reading/analysing Crash
> > > Reports, it would be great if someone could give me some feedback on
> > > it.
> > >  
> > > If you have any question, please do not hesitate to contact me.
> > 
> > From your crash reports I see that git is apparently crashing in a
> > strchr() call from within ident_default_email() which is a function that
> > tries to assemble a name and email to put into your commits.
> 
> BTW, here is the callstack inlined from the crashreport:
> 
> bsystem_platform.dylib0x7fff840db41c 
> _platform_strchr$VARIANT$Haswell + 28
> 1   git   0x00010ba1d3f4 ident_default_email 
> + 801
> 2   git   0x00010ba1d68f fmt_ident + 66
> 3   git   0x00010ba4b495 files_log_ref_write 
> + 175
> 4   git   0x00010ba4b0a6 commit_ref_update + 
> 106
> 5   git   0x00010ba4c3a8 
> ref_transaction_commit + 468
> 6   git   0x00010b994dd8 s_update_ref + 271
> 7   git   0x00010b994556 fetch_refs + 1969
> 8   git   0x00010b9935f2 fetch_one + 1913
> 9   git   0x00010b992bc4 cmd_fetch + 549
> 10  git   0x00010b9666c4 handle_builtin + 478
> 11  git   0x00010b96602f main + 376
> 12  libdyld.dylib 0x7fff834ef5ad start + 1
> 
> Maybe someone else has an idea what might be causing this...

The only strchr I can see that could be called here is in
canonical_name(), where it's called with addrinfo::ai_canonname.

Searching for OS X and ai_canonname, leads me straight back to this
list, although 7 years ago!  I think ident.c needs a fix similar to
commit 3e8a00a (daemon.c: fix segfault on OS X, 2009-04-27); from the
commit message there:

On OS X (and maybe other unices), getaddrinfo(3) returns NULL
in the ai_canonname field if it's called with an IP address for
the hostname.


Re: Re: Homebrew and Git

2016-09-20 Thread Heiko Voigt
On Tue, Sep 20, 2016 at 01:02:28PM +0200, Heiko Voigt wrote:
> Hi,
> 
> On Sun, Sep 18, 2016 at 05:50:28PM +0200, Jonas Thiel wrote:
> > A while ago I have described my problem with Homebrew at the following
> > GitHub channel
> > (https://github.com/Homebrew/homebrew-core/issues/2970). In the
> > meanwhile, I believe that I my problem with Homebrew is based on an
> > issues with my Git. I have found the attached Git Crash reports on my
> > Mac and because I am not familiar with reading/analysing Crash
> > Reports, it would be great if someone could give me some feedback on
> > it.
> >  
> > If you have any question, please do not hesitate to contact me.
> 
> From your crash reports I see that git is apparently crashing in a
> strchr() call from within ident_default_email() which is a function that
> tries to assemble a name and email to put into your commits.

BTW, here is the callstack inlined from the crashreport:

bsystem_platform.dylib  0x7fff840db41c 
_platform_strchr$VARIANT$Haswell + 28
1   git 0x00010ba1d3f4 ident_default_email 
+ 801
2   git 0x00010ba1d68f fmt_ident + 66
3   git 0x00010ba4b495 files_log_ref_write 
+ 175
4   git 0x00010ba4b0a6 commit_ref_update + 
106
5   git 0x00010ba4c3a8 
ref_transaction_commit + 468
6   git 0x00010b994dd8 s_update_ref + 271
7   git 0x00010b994556 fetch_refs + 1969
8   git 0x00010b9935f2 fetch_one + 1913
9   git 0x00010b992bc4 cmd_fetch + 549
10  git 0x00010b9666c4 handle_builtin + 478
11  git 0x00010b96602f main + 376
12  libdyld.dylib   0x7fff834ef5ad start + 1

Maybe someone else has an idea what might be causing this...

Cheers Heiko