From:             andrey dot bukatov at gmail dot com
Operating system: Ubuntu
PHP version:      5.4.19
Package:          Regexps related
Bug Type:         Bug
Bug description:preg_split cause segmentation fault

Description:
------------
This code cause segmentation fault in PHP Version 5.4.19

Test script:
---------------
<?php

$input = '
    /**
     * @RequestParam(name="ticket", description="Графиня
Ростова с дочерьми и уже с большим числом
гостей сидела в гостиной. Граф провел
гостей-мужчин в кабинет, предлагая им
свою охотницкую коллекцию турецких
трубок. Изредка он выходил и спрашивал:
не приехала ли? Ждали Марью Дмитриевну
Ахросимову, прозванную в обществе le terrible
dragon 1, даму знаменитую не богатством, не
почестями, но прямотой ума и откровенною
простотой обращения. Марью Дмитриевну
знала царская фамилия, знала вся Москва и
весь Петербург, и оба города, удивляясь
ей, втихомолку посмеивались над ее
грубостью, рассказывали про нее
анекдоты; тем не менее все без исключения
уважали и боялись ее. В кабинете, полном
дыма, шел разговор о войне, которая была
объявлена манифестом, о наборе.
Манифеста еще никто не читал, но все
знали о его появлении. Граф сидел на
оттоманке между двумя курившими и
разговаривавшими соседями. Граф сам не
курил и не говорил, а, наклоняя голову то
на один бок, то на другой, с видимым
удовольствием смотрел на куривших и
слушал разговор двух соседей своих,
которых он стравил между собой. Один из
говоривших был штатский, с морщинистым,
желчным и бритым худым лицом, человек,
уже приближавшийся к старости, хотя и
одетый, как самый модный молодой человек;
он сидел с ногами на оттоманке с видом
домашнего человека и, сбоку запустив
себе далеко в рот янтарь, порывисто
втягивал дым и жмурился. Это был старый
холостяк Шиншин, двоюродный брат
графини, злой язык, как про него говорили
в московских гостиных. Он, казалось,
снисходил до своего собеседника. Другой,
свежий, розовый гвардейский офицер,
безупречно вымытый, застегнутый и
причесанный, держал янтарь у середины
рта и розовыми губами слегка вытягивал
дымок, выпуская его колечками из
красивого рта. Это был тот поручик Берг,
офицер Семеновского полка, с которым
Борис ехал вместе в полк и которым Наташа
дразнила Веру, старшую графиню, называя
Берга ее женихом. Граф сидел между ними и
внимательно слушал. Самое приятное для
графа занятие, за исключением игры в
бостон, которую он очень любил, было
положение слушающего, особенно когда ему
удавалось стравить двух говорливых
собеседников. — Ну, как же, батюшка, mon très
honorable 2 Альфонс Карлыч, — говорил Шиншин,
посмеиваясь и соединяя (в чем и состояла
особенность его речи) самые простые
народные русские выражения с
изысканными французскими фразами. — Vous
comptez vous faire des rentes sur l\'état 3, с роты доходец
получить хотите? — Нет-с, Петр
Николаевич, я только желаю доказать, что
в кавалерии выгод гораздо меньше против
пехоты. Вот теперь сообразите, Петр
Николаевич, мое положение. Берг говорил
всегда очень точно, спокойно и учтиво.
Разговор его всегда касался только его
одного; он всегда спокойно молчал, пока
говорили о чем-нибудь, не имеющем прямого
к нему отношения. И молчать таким образом
он мог несколько часов, не испытывая и не
производя в других ни малейшего
замешательства. Но как скоро разговор
касался его лично, он начинал говорить
пространно и с видимым удовольствием. —
Сообразите мое положение, Петр Николаич:
будь я в кавалерии, я бы получал не более
двухсот рублей в треть, даже и в чине
поручика; а теперь я получаю двести
тридцать, — говорил он с радостью,
приятною улыбкой, оглядывая Шиншина и
графа, как будто для него было очевидно,
что его успех всегда будет составлять
главную цель желаний всех остальных
людей. — Кроме того, Петр Николаич,
перейдя в гвардию, я на виду, — продолжал
Берг, — и вакансии в гвардейской пехоте
гораздо чаще. Потом, сами сообразите, как
я мог устроиться из двухсот тридцати
рублей. А я откладываю и еще отцу посылаю,
— продолжал он, пуская колечко. — La balance y
est... 4 Немец на обухе молотит хлебец, comme dit
le proverbe 5, — перекладывая янтарь на другую
сторону рта, сказал Шиншин и подмигнул
графу. Граф расхохотался. Другие гости,
видя, что Шиншин ведет разговор, подошли
послушать. Берг, не замечая ни насмешки,
ни равнодушия, продолжал рассказывать о
том, как переводом в гвардию он уже
выиграл чин перед своими товарищами по
корпусу, как в военное время ротного
командира могут убить и он, оставшись
старшим в роте, может очень легко быть
ротным, и как в полку все любят его, и как
его папенька им доволен. Берг, видимо,
наслаждался, рассказывая все это, и,
казалось, не подозревал того, что у
других людей могли быть тоже свои
интересы. Но все, что он рассказывал, было
так мило, степенно, наивность молодого
эгоизма его была так очевидна, что он
обезоруживал своих слушателей. — Ну,
батюшка, вы и в пехоте и в кавалерии,
везде пойдете в ход; это я вам предрекаю,
— сказал Шиншин, трепля его по плечу и
спуская ноги с оттоманки. Берг радостно
улыбнулся. Граф, а за ним и гости вышли в
гостиную. Было то время перед званым
обедом, когда собравшиеся гости не
начинают длинного разговора в ожидании
призыва к закуске, а вместе с тем считают
необходимым шевелиться и не молчать,
чтобы показать, что они нисколько не
нетерпеливы сесть за стол. Хозяева
поглядывают на дверь и изредка
переглядываются между собой. Гости по
этим взглядам стараются догадаться, кого
или чего еще ждут: важного опоздавшего
родственника или кушанья, которое еще не
поспело. Пьер приехал перед самым обедом
и неловко сидел посредине гостиной на
первом попавшемся кресле, загородив всем
дорогу. Графиня хотела заставить его
говорить, но он наивно смотрел в очки
вокруг себя, как бы отыскивая кого-то, и
односложно отвечал на все вопросы
графини. Он был стеснителен и один не
замечал этого. Большая часть гостей,
знавшая его историю с медведем,
любопытно смотрели на этого большого,
толстого и смирного человека,
недоумевая, как мог такой увалень и
скромник сделать такую штуку с
квартальным.")
     */
';

$regex =
'/([a-z_\\][a-z0-9_\:\\]*[a-z]{1})|((?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?)|("(?:[^"]|"")*")|\s+|\*+|(.)/iu';

$matches = preg_split($regex, $input);

Expected result:
----------------
An array containing substrings of subject split along boundaries matched by

pattern.

Actual result:
--------------
Segmentation fault. Process finished with exit code 139.

-- 
Edit bug report at https://bugs.php.net/bug.php?id=65621&edit=1
-- 
Try a snapshot (PHP 5.4):   
https://bugs.php.net/fix.php?id=65621&r=trysnapshot54
Try a snapshot (PHP 5.3):   
https://bugs.php.net/fix.php?id=65621&r=trysnapshot53
Try a snapshot (trunk):     
https://bugs.php.net/fix.php?id=65621&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=65621&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=65621&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=65621&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=65621&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=65621&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=65621&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=65621&r=notwrong
Not enough info:            
https://bugs.php.net/fix.php?id=65621&r=notenoughinfo
Submitted twice:            
https://bugs.php.net/fix.php?id=65621&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=65621&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=65621&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=65621&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=65621&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=65621&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=65621&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=65621&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=65621&r=mysqlcfg

Reply via email to