ID: 37239 Updated by: [EMAIL PROTECTED] Reported By: dimox at inbox dot lv -Status: Open +Status: Feedback Bug Type: Reproducible crash Operating System: Windows XP Pro SP2 PHP Version: 4.4.2 New Comment:
Works perfectly fine on Linux. Please provide more information. Previous Comments: ------------------------------------------------------------------------ [2006-05-12 20:03:50] beagle-php at sector99 dot com I have used Dimox's code on a Windows 2000 server running IIS and PHP 4.4.2 and have reproduced the problem. The regular expression commands on this server combination seem to be susceptible to crashing like this. ------------------------------------------------------------------------ [2006-05-02 11:03:31] dimox at inbox dot lv Can I get trial version of MSVC6? If it exist, can you add link for me? I'm only web-programmer and I has no tools for C++ development/debugging. Maybe you can run file test_bug.php on your oun PC with this tools and generate this debug backtrace? ------------ test_bug.php ------------ <?php $text = '<block name="name1"> something <block name="name2">1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 <blockend> <blockend>'; $regex='/\<block\s*name=\"([^\"]+)\"\s*\>((.(?!\<block\s))+?)\<blockend\>/is'; while(preg_match_all($regex, $text, $block_matches,PREG_SET_ORDER)){ foreach($block_matches AS $block) echo '<pre>'; print_r($block_matches); $text = preg_replace($regex, '', $text); } ?> This file causes 100% crash on my Win32 server. I realy want to help PHP better. ------------------------------------------------------------------------ [2006-04-29 01:42:06] [EMAIL PROTECTED] Thank you for this bug report. To properly diagnose the problem, we need a backtrace to see what is happening behind the scenes. To find out how to generate a backtrace, please read http://bugs.php.net/bugs-generating-backtrace.php for *NIX and http://bugs.php.net/bugs-generating-backtrace-win32.php for Win32 Once you have generated a backtrace, please submit it to this bug report and change the status back to "Open". Thank you for helping us make PHP better. ------------------------------------------------------------------------ [2006-04-28 19:58:03] dimox at inbox dot lv While i symlificate the code i forgot to remove \%\> from example and posted text for parsig was too small to cause error. I found, that block content must be more tan 1330-1360 simbols to couse script crash - until this values it works fine! I increased all "memory size" values in php.ini and in the code, but problem still exist. Changed code: $text = '<block name="name1"> something <block name="name2">1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1223567890 qwertyuiop[[[]asdfghjkl; \zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv bdbdb<> <>><<< 1234567890123456789012345678901234567890123456789012345678901 <blockend> <blockend>'; $regex ='/\<block\s*name=\"([^\"]+)\"\s*\>((.(?!\<block\s))+?)\<blockend\>/is'; while(preg_match_all($regex, $text, $block_matches,PREG_SET_ORDER)){ ... $text = preg_replace($regex, '', $text); } ------------------------------------------------------------------------ [2006-04-28 18:41:53] dimox at inbox dot lv Description: ------------ Regxp couses PHP script crach on Windows. On Linux Server it works fine, but I use Windows server on my PC for development. I try this code on my own PC with Apache/1.3.34 (Win32) PHP/4.4.2 and on another PC with Apache/1.3.34 (Win32) PHP/4.4.1. On my PC this code souses Apache crash, but on another PC this code couses only script crash. I looking information about this bug anywere, but can't find anything useful, except http://bugs.php.net/bug.php?id=27735. I try with logs disconnection, but it doesn't change anything. Help ... Reproduce code: --------------- $regex = '/block\s*name=\"([^\"]+)\"\s*\%\>((.(?!(block\s)))+?)\blockend/is'; while(preg_match_all($regex, $text, $block_matches, PREG_SET_ORDER)){ ... } Expected result: ---------------- $block_matches array with results of regular expression matches. I need in this to parse blocks like block name="name1" something block name="name2" something else ... blockend blockend Actual result: -------------- "Server not found" or "The page cannot be displayed" in browser. After simplification of code to: $regex = '/block\s*name=\"([^\"]+)\"\s*\%\>(.+?)\blockend/is'; while(preg_match_all($regex, $text, $block_matches, PREG_SET_ORDER)){ ... } all works fine(remooved lookahead assertion). If i add () around the '.' - script crash again. $regex = '/block\s*name=\"([^\"]+)\"\s*\%\>((.)+?)\blockend/is'; ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=37239&edit=1