#11181 closed defect (fixed)
internal error with TracIni macro
| Reported by: | Christian Boos | Owned by: | Christian Boos |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.0.2 |
| Component: | i18n | Version: | 1.0dev |
| Severity: | minor | Keywords: | renderingcontext macros |
| Cc: | Branch: | ||
| Release Notes: |
Modify .po files to expand |
||
| API Changes: | |||
| Internal Changes: | |||
Description
Found the following error while looking in the trac.log:
[pid 18612 139956728231680] 2013-05-06 12:38:33,999 Trac[formatter] ERROR: Macro TracIni(None) failed:
Traceback (most recent call last):
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Trac-1.1.2dev_r11794-py2.6.egg/trac/wiki/formatter.py", line 765, in _macro_formatter
return macro.ensure_inline(macro.process(args))
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Trac-1.1.2dev_r11794-py2.6.egg/trac/wiki/formatter.py", line 356, in process
text = self.processor(text)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Trac-1.1.2dev_r11794-py2.6.egg/trac/wiki/formatter.py", line 343, in _macro_processor
text)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Trac-1.1.2dev_r11794-py2.6.egg/trac/wiki/macros.py", line 784, in expand_macro
for section, section_doc in sorted(sections.iteritems()))
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/builder.py", line 261, in __call__
Fragment.__call__(self, *args)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/builder.py", line 97, in __call__
self.append(arg)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/builder.py", line 129, in append
for child in node:
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Trac-1.1.2dev_r11794-py2.6.egg/trac/wiki/macros.py", line 784, in <genexpr>
for section, section_doc in sorted(sections.iteritems()))
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/builder.py", line 261, in __call__
Fragment.__call__(self, *args)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/builder.py", line 97, in __call__
self.append(arg)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/builder.py", line 129, in append
for child in node:
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Trac-1.1.2dev_r11794-py2.6.egg/trac/wiki/macros.py", line 783, in <genexpr>
if option.name.startswith(key_filter))))
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/builder.py", line 352, in __getattr__
return Element(self.namespace and self.namespace[name] or name)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/builder.py", line 248, in __init__
Fragment.__init__(self)
RuntimeError: maximum recursion depth exceeded while calling a Python object
[pid 18612 139956728231680] 2013-05-06 12:38:36,906 Trac[formatter] ERROR: Macro TracIni(None) failed:
Traceback (most recent call last):
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Trac-1.1.2dev_r11794-py2.6.egg/trac/wiki/formatter.py", line 765, in _macro_formatter
return macro.ensure_inline(macro.process(args))
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Trac-1.1.2dev_r11794-py2.6.egg/trac/wiki/formatter.py", line 392, in ensure_inline
text = "</p>%s<p>" % _markup_to_unicode(text)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Trac-1.1.2dev_r11794-py2.6.egg/trac/wiki/formatter.py", line 107, in _markup_to_unicode
markup = stream.render('xhtml', encoding=None, strip_whitespace=False)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/core.py", line 183, in render
return encode(generator, method=method, encoding=encoding, out=out)
File "/usr/local/virtualenv/1.1dev/lib/python2.6/site-packages/Genshi-0.7dev_r1134-py2.6.egg/genshi/output.py", line 57, in encode
return _encode(''.join(list(iterator)))
MemoryError:
No idea yet how that was triggered. By looking at the access.log, it seems there's always a TracIni access around the same time, although going to that page doesn't show an issue. Must have been under a specific locale… yes ;-)
There's a recursion in trunk/trac/locale/ko/LC_MESSAGES/tracini.po@11794#L285 due to the use of [[TracIni]] instead of a simple TracIni like in the original.
IIRC, when deciding what to do for [[X]] when X is both a macro and a wiki page, I opted for a macro call for being backward compatible.
So I think that not expanding [[TracIni()]] while already in a [[TracIni()]] expansion is the best fix here.
Attachments (0)
Change History (2)
comment:1 by , 13 years ago
| Resolution: | → fixed |
|---|---|
| Severity: | major → minor |
| Status: | new → closed |
comment:2 by , 12 years ago
| Release Notes: | modified (diff) |
|---|



Hm, it's not like we don't have control here over what is produced by
[[TracIni()]], so just clean-up the .po files.Done so in r11801.
Now if someone writes a macro an calls
[[WikiMacros]]within its documentation…