在某些条件下对正则表达式进行PHP段错误,我该如何举报?

时间:2013-12-04 13:17:22

标签: php regex segmentation-fault pcre

我有一个segfaulting的脚本。我将案件简化为以下内容:

// a very loooong string ---->
$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mauris nibh, fringilla dapibus pharetra sit amet, cursus ut elit. Proin nulla nisl, accumsan at vulputate eu, elementum ac enim. Aliquam tortor lacus, ullamcorper sed purus ac, pulvinar euismod sem. Praesent euismod lacus et . Proin nulla nisl, accumsan at vulputate eu, elementum ac enim. Aliquam tortor lacus, ullamcorper sed purus ac, pulvinar euismod sem. Praesent euismod lacus et . Proin nulla nisl, accumsan at vulputate eu, elementum ac enim. Aliquam tortor lacus, ullamcorper sed purus ac, pulvinar euismod sem. Praesent euismod lacus et . Proin nulla nisl, accumsan at vulputate eu, elementum ac enim. Aliquam tortor lacus, ullamcorper sed purus ac, pulvinar euismod sem. Praesent euismod lacus et";
preg_match_all('/^(.)*$/', $string, $matches);

在这些条件下这段错误:

它在Windows上和使用Apache时在PHP5.3.x和PHP5.4.x上崩溃。

它在Linux上运行良好。它通过命令行(在Windows上)和PHPUnit运行良好。

如果缩短$string的长度,它就可以正常运行。如果将正则表达式更改为/^(?:.)*$/(非捕获),则运行正常。

所以我的猜测是我正在达到某种限制。

pcre.backtrack_limit    1000000
pcre.recursion_limit    100000

我应该报告这个,如果是这样,怎么/在哪里?


我可以通过更改正则表达式来轻松地解决这个问题,因此对我来说这不是一个问题。 segfaulting真的很烦人(难以调试,难以检测)

1 个答案:

答案 0 :(得分:0)

检查bugs.php.net以查看是否已报告类似问题。如果没有,请制作您自己的错误报告。看起来你对如何重现这个bug有很好的把握。