[reportlab-users] IndexError exception in platypus.paraparser

Germán M. Bravo german.mb at gmail.com
Thu Dec 31 02:35:10 EST 2015


I'm working with ReportLab in a threaded environment and I've been getting
a weird exception about IndexError when doing some operations such as
_pop() during platypus.paraparser.ParaParser.end_br(). I think I've tracked
the error down the fact _stack is a member of the TTParser instance (using
rml2pdf).

After googling around, I found a place where the source code of rml2pdf
shows this:

class TTParagraphMixin:
    _CLEAN_SPACE = 0
    _parser = TTParser()
    ...

Then, doing:

from rlextra.rml2pdf import rml2pdf
print(repr(rml2pdf.TTParagraphMixin._parser))

confirms TTParser is an instance: <rlextra.rml2pdf.rml2pdf.TTParser
instance at 0x1053eae18>

This means TTParser instance there is an instance placed as a property of
TTParagraphMixin at class level (which means it's shared by all instances
of TTParagraph, TTXPreformatted and others) ...but (at least)
TTParser._stack could be modified by several threads at the same time
(causing the aforesaid exception to raise from time to time).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/reportlab-users/attachments/20151231/09ab4a6a/attachment.html>


More information about the reportlab-users mailing list