|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2009-03-27 17:26 UTC] travis at wikihow dot com
 Description:
------------
Run a preg_match with source text attached and get a seg fault. Apache 2.2 / PHP 5.2.9 and PHP 5.2.4. 
preg_match('@<object(.|\n)*</object>@im', $text, $matches);
Reproduce code:
---------------
http://wikidiy.com/php_bug_crash.txt
Expected result:
----------------
Apache not supposed to crash, completes preg_match, dumps $matches array.
Actual result:
--------------
Apache seg faults
[Fri Mar 27 12:16:05 2009] [notice] child pid 6391 exit signal Segmentation fault (11)
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 11:00:01 2025 UTC | 
I have a similar segfault testcase for preg_match. It always crashes at a stringlength of around 6700. PHP is 5.2.8 on gentoo linux. # Create my test-string for ($i=0; $i<20000; $i++) { $string .= 'a'; } # The pattern matches for \\, \", everything except " and " $pattern = '/^(\\\\|\\"|[^"]|")+$/'; print "Trying with string length " . "\033" . '[s'; for ($counter=6600; $counter<strlen($string); $counter++) { if (preg_match($pattern, substr($string,0,$counter), $matches)) { print "\033" . '[u' . $counter . '...'; flush(); list($dummy, $aa) = $matches; } } print "\n";Another php preg_match crash using php 5.2.9-1 on Windows XP and 2003R2: <?php $string = str_repeat('blub ', 100000); $regexp = '/ \G (?P<text> (?:.(?!\[% ))*.(?=\[%| $))/isx'; if (preg_match($regexp, $string, $aMatches, PREG_OFFSET_CAPTURE, 0)) { echo "matched\n"; } echo "finished"; ?>