RE: [PHP-DEV] PCRE JIT stack size limit

From: Date: Sun, 20 Mar 2016 21:41:13 +0000
Subject: RE: [PHP-DEV] PCRE JIT stack size limit
References: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  Groups: php.internals 
Request: Send a blank email to internals+get-91794@lists.php.net to get a copy of this message
Hi, > -----Original Message----- > From: David Zuelke [mailto:dz@heroku.com] > Sent: Sunday, March 20, 2016 10:10 PM > To: Anatol Belski <anatol.php@belski.net> > Cc: Christoph Becker <cmbecker69@gmx.de>; Pierre Joye > <pierre.php@gmail.com>; PHP internals <internals@lists.php.net> > Subject: Re: [PHP-DEV] PCRE JIT stack size limit > > > On 17.03.2016, at 05:22, David Zuelke <dz@heroku.com> wrote: > > > >> On 16.03.2016, at 21:38, Anatol Belski <anatol.php@belski.net> wrote: > >> > >> Hi, > >> > >>> -----Original Message----- > >>> From: David Zuelke [mailto:dz@heroku.com] > >>> Sent: Tuesday, March 15, 2016 11:58 PM > >>> To: Anatol Belski <anatol.php@belski.net> > >>> Cc: Christoph Becker <cmbecker69@gmx.de>; Pierre Joye > >>> <pierre.php@gmail.com>; PHP internals <internals@lists.php.net> > >>> Subject: Re: [PHP-DEV] PCRE JIT stack size limit > >>> > >>> Sure. So composer creates patterns to parse a file dynamically; I > >>> have not figured out why it only happens for some composer.json > >>> files (or maybe it happens for all of them and I just have not > >>> noticed), but this example here I extracted from a reproducibly > >>> failing "composer require" run; it runs into the JIT stack size limit on PHP 7 > while it works fine on 5.x: > >>> > >>> > >>> https://gist.github.com/dzuelke/cc64a630c14416eda3e9 > >>> > >> I've just tried this on Debian Jessie and on Windows with the latest 7.0.x > builds, in both cases the error is PREG_BACKTRACK_LIMIT_ERROR. I'd be next > asking you to check the configuration. Runtime like system or ini, or build config > can affect this. Anyway, I don't see an issue with PCRE JIT at the moment. > > > > Sorry, I simplified the example too far. Updated it again to throw a JIT stack > limit error again (but works fine with "php -dpcre.jit=0"): > > > > > > https://gist.github.com/dzuelke/cc64a630c14416eda3e9/de7b7293798ac57b4 > > f75d822dc22a625be0fe9df > > Were you able to reproduce this? :) > Yes, it is reproducible. I was just investigating on another issue https://bugs.exim.org/show_bug.cgi?id=1803 which now seems unrelated. With the JIT stack - we can try to use a custom stack to increase its size by allocating a custom jit stack of an increased sizeas a workaround. If that works, it should be fine. I'll be working on a patch next week, then we can see this option makes sense. More on the topic is readable here http://www.pcre.org/original/doc/html/pcrejit.html#stackcontrol . Regards Anatol

« previous php.internals (#91794) next »