Проблема была в неоптимальном регулярном выражении, которое приводило к перерасходу памяти.
Следовало писать что-то вроде такого $s_text[^s_text.match[^^([^l]++|(?!lalala))+(lalala)][ig]{$match.2}]
Благодаря Misha v.3 удалось найти ошибку. Этот случай (видимо, классический) описан в документации PCRE - http://pcre.org/pcre.txt (раздел Reducing pcre_exec()'s stack usage)