From: Duy Nguyen <pclouds@gmail.com>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: "brian m. carlson" <sandals@crustytoothpaste.net>,
"Александр Булаев" <aleks.bulaev@gmail.com>,
"Git List" <git@vger.kernel.org>
Subject: Re: git 2.16.0 segfaults on clone of specific repo
Date: Fri, 19 Jan 2018 15:22:06 +0700 [thread overview]
Message-ID: <CACsJy8AOPDNTbAWzDHd+Oa5PSc1v2qdfcaq60P7X5wznM4VTug@mail.gmail.com> (raw)
In-Reply-To: <20180119074001.GA55929@flurp.local>
On Fri, Jan 19, 2018 at 2:40 PM, Eric Sunshine <sunshine@sunshineco.com> wrote:
> On Fri, Jan 19, 2018 at 12:31:58PM +0700, Duy Nguyen wrote:
>> On Fri, Jan 19, 2018 at 10:40 AM, brian m. carlson
>> > I'm still extremely puzzled as to why this doesn't fail on Linux. If
>> > it's failing in this case, it should very, very clearly fail all the
>> > time we access an empty blob or an empty tree.[...]
>>
>> I think it's file system related, case-insensitive one in particular.
>>
>> The call trace posted at the beginning of this thread should never
>> trigger for an initial clone. You only check if an _existing_ entry
>> matches what you are about to checkout when you switch trees. For this
>> to happen at clone time, I suppose you have to checkout entry "A",
>> then re-checkout "A" again. Which can only happen on case-insensitive
>> file systems and a case-sensitive repo where the second "A" might
>> actually be "a".
>> [...]
>> On Linux, after I hacked all over the place to force ce_match_stat()
>> to eventually call index_fd() which in turns must use one of the
>> hashing function, I got a crash.
>
> Nice detective work.
And not stepping back to think for a bit. I realized now that if I
just mounted a vfat filesystem, I could have verified it much quicker.
It does crash on linux with similar stack trace.
(gdb) bt
#0 0x000000000055809f in is_empty_blob_sha1 (sha1=0x8fa6d4 "\236") at
cache.h:1055
#1 0x0000000000558acd in ce_match_stat_basic (ce=0x8fa690,
st=0x7fffffffcd20) at read-cache.c:272
#2 0x0000000000558c78 in ie_match_stat (istate=0x8e9fc0 <the_index>,
ce=0x8fa690, st=0x7fffffffcd20, options=5) at read-cache.c:342
#3 0x0000000000501e01 in checkout_entry (ce=0x8fa690,
state=0x7fffffffcea0, topath=0x0) at entry.c:424
#4 0x00000000005c8ea0 in check_updates (o=0x7fffffffd060) at unpack-trees.c:383
#5 0x00000000005cb2bb in unpack_trees (len=1, t=0x7fffffffd010,
o=0x7fffffffd060) at unpack-trees.c:1382
#6 0x00000000004214ca in checkout (submodule_progress=1) at builtin/clone.c:750
#7 0x00000000004229ce in cmd_clone (argc=1, argv=0x7fffffffd840,
prefix=0x0) at builtin/clone.c:1191
#8 0x0000000000405846 in run_builtin (p=0x89a908 <commands+456>,
argc=2, argv=0x7fffffffd840) at git.c:346
#9 0x0000000000405af7 in handle_builtin (argc=2, argv=0x7fffffffd840)
at git.c:554
#10 0x0000000000405c8f in run_argv (argcp=0x7fffffffd6fc,
argv=0x7fffffffd6f0) at git.c:606
#11 0x0000000000405e31 in cmd_main (argc=2, argv=0x7fffffffd840) at git.c:683
#12 0x00000000004a3231 in main (argc=3, argv=0x7fffffffd838) at common-main.c:43
> This particular manifestation is caught by the
> following test which fails without brian's patch on MacOS (and
> presumably Windows) and succeeds with it. On Linux and BSD, it will of
> course succeed always, so I'm not sure how much practical value it
> has.
There's a travis job running "on windows" (I don't what it really
means) so it might help actually. This vim-colorschemes repository has
shown up in git mailing list before, I think. We probably should just
add it as part of our regression tests ;-)
--
Duy
next prev parent reply other threads:[~2018-01-19 8:22 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-18 20:55 git 2.16.0 segfaults on clone of specific repo Александр Булаев
2018-01-18 21:03 ` Randall S. Becker
2018-01-19 0:15 ` Eric Sunshine
2018-01-19 2:47 ` brian m. carlson
2018-01-19 3:06 ` Eric Sunshine
2018-01-19 3:39 ` Randall S. Becker
2018-01-19 3:40 ` brian m. carlson
2018-01-19 5:31 ` Duy Nguyen
2018-01-19 7:40 ` Eric Sunshine
2018-01-19 8:22 ` Duy Nguyen [this message]
2018-01-19 8:28 ` Eric Sunshine
2018-01-19 17:25 ` Todd Zullinger
2018-01-20 0:23 ` Eric Sunshine
2018-01-19 22:31 ` brian m. carlson
2018-01-20 0:15 ` Eric Sunshine
2018-01-20 0:23 ` brian m. carlson
2018-01-20 0:27 ` Eric Sunshine
2018-01-19 4:18 ` [PATCH] repository: pre-initialize hash algo pointer brian m. carlson
2018-01-19 7:54 ` Eric Sunshine
2018-01-19 19:24 ` Junio C Hamano
2018-01-19 21:48 ` Eric Sunshine
2018-01-19 22:25 ` Junio C Hamano
2018-01-19 23:14 ` brian m. carlson
2018-01-20 7:01 ` Junio C Hamano
2018-01-20 9:38 ` Eric Sunshine
2018-01-20 20:33 ` [PATCH] t: add clone test for files differing only in case brian m. carlson
2018-01-21 1:19 ` Eric Sunshine
2018-01-21 7:33 ` Junio C Hamano
2018-01-21 7:46 ` Eric Sunshine
2018-01-21 8:07 ` Eric Sunshine
2018-01-21 19:55 ` brian m. carlson
2018-01-21 11:50 ` Duy Nguyen
2018-01-21 18:47 ` Eric Sunshine
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CACsJy8AOPDNTbAWzDHd+Oa5PSc1v2qdfcaq60P7X5wznM4VTug@mail.gmail.com \
--to=pclouds@gmail.com \
--cc=aleks.bulaev@gmail.com \
--cc=git@vger.kernel.org \
--cc=sandals@crustytoothpaste.net \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).