Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
The regular expressions in views_break_phrase()
can cause a segmentation fault if there is a large number of arguments passed to the view due to the amount of recursion. This can be solved one of two ways:
- Change
pcre.backtrack_limit
to a more reasonable value. The question here is: what is reasonable? Relying on the end-user to set this appropriately for their installation may be a bit much to ask considering the relative obscurity of this feature. - Refactor the regular expressions to avoid the amount of recursion causing the segmentation fault, namely the
([0-9]+[+ ])+
portion.
Comment | File | Size | Author |
---|---|---|---|
#1 | views-arguments-regex-segfault-1884772-1.patch | 774 bytes | BassistJimmyJam |
Comments
Comment #1
BassistJimmyJam CreditAttribution: BassistJimmyJam commentedPatch attached.
Comment #2
dawehnerHow many arguments did you passed into the view to cause a seg.fault? Is this a number you can estimate?
In general there are multiple issues in both views and drupal issue queue to simplify the regular expression.
Comment #3
BassistJimmyJam CreditAttribution: BassistJimmyJam commentedI had over 7000 arguments being passed to the view. I'm not sure what the minimum number of arguments would be that would cause this issue. I searched the views issue queue before posting but was unable to find any issues addressing these specific regular expressions.
Comment #4
dawehnerYeah maybe not that easy to find, sorry: #1792836: Merge HandlerBase::breakPhrase() and HandlerBase::breakPhraseString() and clean up
Comment #5
dawehnerIn general this sounds wrong: 7k arguments to a view, ... can you please have a look at the other issue whether that new regex makes it easier?
Comment #6
BarisW CreditAttribution: BarisW commentedI was having a similar issue. On Drupal Commons, visiting the /activity page as a logged-in user, I was getting the segmentation fault as well. Described here: #2150673: Activity overview is broken for normal users
Comment #7
BarisW CreditAttribution: BarisW commentedCan this be committed?
Comment #8
clemens.tolboomHmmm ... the Drupal 8 views fix in #1792836: Merge HandlerBase::breakPhrase() and HandlerBase::breakPhraseString() and clean up does not follow the patch from #1 regarding recursion depths.
@BassistJimmyJam where did those 7K argument come from?
Side info : nice way to test @ http://www.phpliveregex.com/
Comment #9
BassistJimmyJam CreditAttribution: BassistJimmyJam commentedIt's been awhile since I ran into this, but I believe they came form a default argument plugin. Those arguments were also passed to the link for the attached CSV export.
Comment #10
Chris Matthews CreditAttribution: Chris Matthews commentedThe 6 year old patch in #1 to handlers.inc applied cleanly to the latest views 7.x-3.x-dev and if still relevant needs to be reviewed.