Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:12326 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 71945 invoked by uid 1010); 24 Aug 2004 15:54:28 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 66717 invoked from network); 24 Aug 2004 15:53:53 -0000 Received: from unknown (HELO asuka.prohost.org) (69.196.31.138) by pb1.pair.com with SMTP; 24 Aug 2004 15:53:53 -0000 Received: (qmail 27139 invoked from network); 24 Aug 2004 15:53:52 -0000 Received: from rei.nerv (HELO dummy.com) (rei@192.168.1.1) by asuka.nerv with SMTP; 24 Aug 2004 15:53:52 -0000 Reply-To: ilia@prohost.org To: internals@lists.php.net, Jason Date: Tue, 24 Aug 2004 11:53:56 -0400 User-Agent: KMail/1.6.1 References: <20040824122859.1826.qmail@web11002.mail.yahoo.com> In-Reply-To: <20040824122859.1826.qmail@web11002.mail.yahoo.com> Organization: Prohost.org MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-ID: <200408241153.56659.ilia@prohost.org> Subject: Re: [PHP-DEV] preg leak From: ilia@prohost.org (Ilia Alshanetsky) This is not a bug, but rather expected behavior. PCRE extension caches compiled regular expressions so that subsequent runs of the same regex do not need to perform the compilation step. In your example you are generating new regex in an unterminated loop, so it's no surprise that PHP eventually exhausts the available memory and terminates. Ilia On August 24, 2004 08:28 am, Jason wrote: > Hi guys, > > I'm looking for the maintainer of the preg_match > function in PHP. There appears to be a nasty leak in > its most basic functionality, and being a very > fundamental function of PHP (not to mention that my > long running scripts use it a lot ;) I thought I'd try > and go the direct route. Sorry, I don't know C or I'd > try to fix it myself! Considering its nature I > thought best to at least make a post to the list > rather than it get lost in the bugs pile (the original > (much less refined) report from someone else had been > sitting a long time). > > while (1) { > $body = "any string"; > $rand = "any different > strings".mt_rand(0,mt_getrandmax()); > $pattern = "/$rand/"; > preg_match($pattern, $body, $match); > } > ?> > > http://bugs.php.net/bug.php?id=28513 > > This leaks 50MB per second on my PHP5.0.0,5.0.1. It > is probably the similar bug reported in PHP4. If you > have any suggestions, please let me know! > > Sincere regards, > > Jason. > > > > > _______________________________ > Do you Yahoo!? > Win 1 of 4,000 free domain names from Yahoo! Enter now. > http://promotions.yahoo.com/goldrush