Edit report at https://bugs.php.net/bug.php?id=65621&edit=1
ID: 65621 Updated by: fel...@php.net Reported by: andrey dot bukatov at gmail dot com Summary: preg_split cause segmentation fault -Status: Open +Status: Not a bug Type: Bug -Package: Regexps related +Package: PCRE related Operating System: Ubuntu PHP Version: 5.4.19 Block user comment: N Private report: N New Comment: Sorry, but your problem does not imply a bug in PHP itself. For a list of more appropriate places to ask for help using PHP, please visit http://www.php.net/support.php as this bug system is not the appropriate forum for asking support questions. Due to the volume of reports we can not explain in detail here why your report is not a bug. The support channels will be able to provide an explanation for you. Thank you for your interest in PHP. This is known issue on lib PCRE, not a PHP bug. Previous Comments: ------------------------------------------------------------------------ [2013-09-05 10:52:07] andrey dot bukatov at gmail dot com 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 this bug report at https://bugs.php.net/bug.php?id=65621&edit=1