01181: inconsistency between pagelist and too many custom markups

Summary: inconsistency between pagelist and too many custom markups
Created: 2010-04-05 13:09
Status: Awaiting feedback
Category: Bug
Assigned:
Priority: 5
Version: latest (2.2.15)
OS: SunOS 5.10 Generic_141414-08 sun4v sparc SUNW,SPARC-Enterprise-T5120 / Apache/2.2.13 (Unix) DAV/2 mod_ssl/2.2.13 OpenSSL/0.9.7d PHP/5.2.12 proxy_html/3.0.1 mod_python/3.3.1 Python/2.3.3

Description: I discard the previous description, since it seems that the problem is not due to creole but to the following:

If i call to many times the Markup function (e.g. by using creole.php and some additional markups in config.php), some pagelists do not work anymore.

Question: is there a possibility to increase the bound on the number of custom markups?

There is a problem between creole and pagelists:


If it may help, here is a pagelist that do not work when i define too many custom markups:

I have a pagelist like this:

(:pagelist $:Date=20* group=GT order=-$:Date fmt=GT/LocalTemplates#listepasses :)

And a template like that in GT/LocalTemplates (that do not use any specific markup of creole):

(:if false:)
[[#listepasses]]
(:if1 date {=$:Date}..:)
* {=$:Date} - (:if2 ! equal "" "{=$:WebPage}":) [[{=$:WebPage}|{=$:Speaker}]] (:else2:) {=$:Speaker} (:if2end:) - [[{=$FullName}|{=$:Title}]]
(:if1end:) 
[[#listepassesend]]

Thanks for all.


Discussion

  • (DaveG said) It's possible you need to increase $MaxIncludes -- default is 50 I think, so try 100 or so.
  • (Thierry said) i set $MaxIncludes to 400 and it does not work. The problem may not be about including pages, but probably more about markups and/or pagelists. The question is : does there exist a variable that bounds the number of calls to the Markup function?
  • (Peter said) There's some PHP limitation on the maximum number of regexes that can be processed -- pcre.backtrack_limit and pcre.recursion_limit would be places to start, perhaps? This is kind of a guess... Are you dealing with a LOT of recipes that you've installed? If you use ?action=ruleset (you have to have diagnostics turned on, I believe) roughly how many rules are you dealing with?
  • (Thierry said) The page i get when i use ?action=ruleset has 162 lines. The value for pcre.backtrack_limit and pcre.recursion_limit are 100000. I am using the following cookbooks or scripts :
    • /scripts/xlpage-utf-8.php
    • /scripts/creole.ph
    • /scripts/feeds.php
    • /cookbook/reminder.php
    • /cookbook/mimetex.php
    • /cookbook/latexmarkup.ph
    • /cookbook/pagetoc.php
    • /cookbook/sortable.php
    • /cookbook/skinchange.php
    • and 9 home-made Markups (for translating page variables into different languages)
  • (Petko said) No, there isn't a limit on the number of calls to Markup() and the pagelist on our Cookbook.Creole-Sandbox seems to work. It may be a conflict between markups. If you disable some of your custom markups, does it work? Can you identify which markups cause the problems? --Petko April 21, 2010, at 02:52 PM
  • (Thierry said) after some tests, it seems that it suffices that i remove 2 of the markups and then the pagelist works again, so i guess that only the number of markups is important, not their type.
  • The only possibility I see is the "pcre.backtrack_limit" suggested by Peter. PmWiki tries to increase it to 1000000 but if it can't, it would not complain. You may need to edit your php.ini file, find the line with backtrack_limit, remove the ";" at its beginning, and set the number to 1000000. If it still doesn't work, some Markup definitions, yours or recipes, may need some optimization. --Petko November 09, 2010, at 05:03 AM