From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Matthew Hughes <matthewhughes934@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: segfault on invalid 'git grep' invocation
Date: Mon, 28 Jun 2021 20:53:56 +0200 [thread overview]
Message-ID: <87bl7phl41.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <20210628121748.f3yrc72v4mynknl3@debianXPS.lan>
On Mon, Jun 28 2021, Matthew Hughes wrote:
> Hi all,
>
> It's my first time writing to this mailing list, so apologies in advance
> for any mistakes/faux pas.
Thanks a lot for the report, and welcome.
> Summary
> =======
>
> Segfault seen when running:
>
> $ ./git grep --and -e 'pattern' -- not_a_path
>
> Expected Behaviour
> ==================
>
> The above invocation doesn't appear particularly valid to me, I
> accidentally ran it while editing a command. Not sure if this needs
> addressing, but perhaps the expected behaviour would be an error message
> about it not being valid?
>
> Compare with, running without '--':
>
> $ ./git grep --and -e 'pattern' not_a_path
> fatal: ambiguous argument 'not_a_path': unknown revision or path not in the working tree.
> Use '--' to separate paths from revisions, like this:
> 'git <command> [<revision>...] -- [<file>...]'
>
> Running with a valid path:
>
> $ ./git grep --and -e 'pattern' -- common-main.c
> fatal: Not a valid grep expression
>
> $ ./git grep --and -e 'pattern' common-main.c
> fatal: Not a valid grep expression
The exact segfault you've found is found at least back to Git version
2.0.0, so it's been with us for a while.
The problem is that you're trying to --and two things, but did not
provide two things. We apparently never checked for this, and then
segfault in the cleanup, thinking an --and must imply that we have two
sides.
I haven't looked deeply, but think that the reason it segfaults just
with not_a_path is that we then proceed to die() in something that
should probably be a BUG() instead as we can't grep in the
expected-but-not-there pattern at runtime.
Giving it a pathspec that doesn't exist means we never run the "real"
grep, but we do run the cleanup, hence the segfault.
next prev parent reply other threads:[~2021-06-28 18:58 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-28 12:17 segfault on invalid 'git grep' invocation Matthew Hughes
2021-06-28 18:53 ` Ævar Arnfjörð Bjarmason [this message]
2021-06-28 18:58 ` [PATCH] grep: report missing left operand of --and René Scharfe
2021-06-29 17:52 ` Ævar Arnfjörð Bjarmason
2021-06-29 18:35 ` René Scharfe
2021-06-30 16:12 ` [PATCH v2] " René Scharfe
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=87bl7phl41.fsf@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=matthewhughes934@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.