Re: [PATCH] grep: fall back to interpreter mode if JIT fails
- From
Carlo Arenas <carenas@gmail.com>
- Date
- Dec 17, 2022, 02:50 UTC
- Message-ID
- <CAPUEspjqgSOS4KKw2nTaRYdiCFo4Ok6OfmKrqb+Mjq+oXn5nsg@mail.gmail.com>
- In-Reply-To
- <xmqqlen7kksr.fsf@gitster.g>
On Fri, Dec 16, 2022 at 3:09 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 9 quoted lines
> > Mathias Krause <minipli@grsecurity.net> writes: > > > ... However, from a user's point of view a fall back to > > interpreter mode might still be desired in this case, as a failing > > 'git grep' is simply not acceptable, IMHO. > > "git grep" that silently produces a wrong result (by falling back > after a problem is detected) would not be acceptable, either.
except that an error at this point only invalidates the use of JIT, so calling pcre2_jit_match() is invalid but calling pcre2_match() is not.
the later is setup to be used later by the code that is added,
> Receiving BADOPTION could be a sign that there is something wrong in > the input, not from the end-user but from the code, in which case > stopping with BUG() may be a more appropriate?
The way PCRE handles this kind of errors internally is to instruct pcre2_match() to use the interpreter.
While a BUG() might be a way to ensure the code is using the right set of options I would expect that the failure will be reported by pcre2_compile instead, with the only cases left, only being interna to PCRE (ex: JIT can't yet support a feature the interpreter has)
Carlo