Last modified: 2014-11-03 04:22:37 UTC
Parser::doBlockLevels() constructs regular expressions with unique strip markers. Each regular expression pattern is turned into a StaticString, which HHVM uses as a lookup key for the cached PCRE table. Since patterns with strip markers are unique by design, they are cache misses, and they get compiled and cached. The results are: * The PCRE table fills up with garbage (patterns that are identical save for the strip markers). * Memory bloats with pattern StaticStrings.
Change 167411 had a related patch set uploaded by Ori.livneh: Use a fixed regex for StripState https://gerrit.wikimedia.org/r/167411
Change 167411 merged by jenkins-bot: Use a fixed regex for StripState https://gerrit.wikimedia.org/r/167411
Change 167530 had a related patch set uploaded by Ori.livneh: Re-use marker strings across requests https://gerrit.wikimedia.org/r/167530
(In reply to Gerrit Notification Bot from comment #2) > Change 167411 merged by jenkins-bot: > Use a fixed regex for StripState > > https://gerrit.wikimedia.org/r/167411 This patch was reverted in change Ic193abcff8c72b0c8b.