From: "Carlo Marcelo Arenas Belón" <firstname.lastname@example.org> To: email@example.com Cc: firstname.lastname@example.org Subject: [RFC PATCH 0/2] fallback to interpreter if JIT fails with pcre Date: Sun, 9 Dec 2018 15:00:22 -0800 [thread overview] Message-ID: <email@example.com> (raw) while testing in NetBSD 8, was surprised to find that most test cases using PCRE2 where failing with some cryptic error from git : fatal: Couldn't JIT the PCRE2 pattern '$PATTERN', got '-48' interestingly enough, using a JIT enabled PCRE1 library (not the default) will show a similar error but a different error code. the underlying problem is the same though; NetBSD includes PAX support which restricts the use of memory that is both writeable and executable and that prevents the JIT to create a compiled expression to jump into, and while the "fix" for NetBSD is simple it would seem the user experience could be improved if instead of aborting, git will instead return the matches using the slower interpreter (which seem to be also the recomendation from the library developers) it is important to note that the problem is not unique to NetBSD and had reproduced it in OpenBSD where working around the issue is more complicated as WˆX exceptions require a filesystem mount option, and I can see it being problematic with linux (as shown by the open bug and the development of an alternative allocator to workaround the issue with seLinux) and with macOS (specially versions older than 10.14) where there are restrictions to the number of maps allowed with those flags. I am also curious if expanding NO_LIBPCRE1_JIT as an option to disable JIT with PCRE2 (with a different name) might be worth pursuing? as well as some ways to narrow the failures that will trigger the fallback, but the later is likely to need library changes which might not be possible with the old version anyway.  https://bugs.exim.org/show_bug.cgi?id=1749 Carlo Marcelo Arenas Belón (2): grep: fallback to interpreter if JIT fails with pcre1 grep: fallback to interpreter if JIT fails with pcre2 Makefile | 12 ++++++------ grep.c | 13 +++++++++++-- 2 files changed, 17 insertions(+), 8 deletions(-) -- 2.20.0
next reply other threads:[~2018-12-09 23:01 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-12-09 23:00 Carlo Marcelo Arenas Belón [this message] 2018-12-09 23:00 ` [RFC PATCH 1/2] grep: fallback to interpreter if JIT fails with pcre1 Carlo Marcelo Arenas Belón 2018-12-09 23:51 ` Ævar Arnfjörð Bjarmason 2018-12-10 0:42 ` brian m. carlson 2018-12-10 1:25 ` Carlo Arenas 2018-12-10 6:42 ` Junio C Hamano 2018-12-10 8:24 ` Ævar Arnfjörð Bjarmason 2018-12-11 20:11 ` Carlo Arenas 2018-12-11 20:51 ` Ævar Arnfjörð Bjarmason 2018-12-10 6:54 ` Junio C Hamano 2018-12-10 6:48 ` Junio C Hamano 2018-12-09 23:00 ` [RFC PATCH 2/2] grep: fallback to interpreter if JIT fails with pcre2 Carlo Marcelo Arenas Belón 2018-12-10 7:00 ` Junio C Hamano
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 List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [RFC PATCH 0/2] fallback to interpreter if JIT fails with pcre' \ /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
Code repositories for project(s) associated with this inbox: https://80x24.org/mirrors/git.git 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 read-only IMAP folder(s) and NNTP newsgroup(s).