Re: Segfault in zope.configuration

Martin Aspeli <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <[email protected]>
Martin Aspeli wrote:

> At this point, something is printed to the console. collective.wtf is a
> dependency of lw.portal, and its ZCML is being included from lw.portal.
>
> /home/osc/osc/eggs/collective.wtf-1.0b9-py2.6.egg/collective/wtf/exportimport.py:8:
> DeprecationWarning: InitializeClass is deprecated. import from
> App.class_init instead
>     from Globals import InitializeClass

Okay, I found out what it does next: It now processes z3c.autoinclude's 
<includeDependencies />, which basically just goes through the 
dependencies in setup.py's install_requires and tries to load a 
configure.zcml for each. It successfully does that for a number of 
dependencies, up until it hits "collective.xdv" (same package I saw the 
problem with when I set up a minimal buildout that just had Plone and 
collective.xdv in it).

The pdb log is:

(Pdb) l
  43  	
  44  	def includeDependenciesDirective(_context, package):
  45  	
  46  	    import pdb; pdb.set_trace()
  47  	
  48  ->	    if api.dependencies_disabled():
  49  	        log.warn('z3c.autoinclude.dependency is disabled but is 
being invoked by %s' % _context.info)
  50  	        return
  51  	
  52  	    dist = distributionForPackage(package)
  53  	    info = 
DependencyFinder(dist).includableInfo(['configure.zcml', 'meta.zcml'])
(Pdb) n
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(52)includeDependenciesDirective()
-> dist = distributionForPackage(package)
(Pdb) n
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(53)includeDependenciesDirective()
-> info = DependencyFinder(dist).includableInfo(['configure.zcml', 
'meta.zcml'])
(Pdb) n
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(55)includeDependenciesDirective()
-> includeZCMLGroup(_context, info, 'meta.zcml')
(Pdb) pp info
{'configure.zcml': ['collective.xdv', 'five.grok', 'z3c.jbot'],
  'meta.zcml': ['five.grok', 'z3c.jbot']}
(Pdb) l
  50  	        return
  51  	
  52  	    dist = distributionForPackage(package)
  53  	    info = 
DependencyFinder(dist).includableInfo(['configure.zcml', 'meta.zcml'])
  54  	
  55  ->	    includeZCMLGroup(_context, info, 'meta.zcml')
  56  	    includeZCMLGroup(_context, info, 'configure.zcml')
  57  	
  58  	def includeDependenciesOverridesDirective(_context, package):
  59  	
  60  	    if api.dependencies_disabled():
(Pdb) n
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(56)includeDependenciesDirective()
-> includeZCMLGroup(_context, info, 'configure.zcml')
(Pdb) s
--Call--
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(15)includeZCMLGroup()
-> def includeZCMLGroup(_context, info, filename, override=False):
(Pdb) n
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(16)includeZCMLGroup()
-> includable_zcml = info[filename]
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(20)includeZCMLGroup()
-> zcml_context = repr(_context.info)
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(22)includeZCMLGroup()
-> for dotted_name in includable_zcml:
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(23)includeZCMLGroup()
-> log.debug('including file %s from package %s at %s', filename, 
dotted_name, zcml_context)
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(22)includeZCMLGroup()
-> for dotted_name in includable_zcml:
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(23)includeZCMLGroup()
-> log.debug('including file %s from package %s at %s', filename, 
dotted_name, zcml_context)
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(22)includeZCMLGroup()
-> for dotted_name in includable_zcml:
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(23)includeZCMLGroup()
-> log.debug('including file %s from package %s at %s', filename, 
dotted_name, zcml_context)
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(22)includeZCMLGroup()
-> for dotted_name in includable_zcml:
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(25)includeZCMLGroup()
-> for dotted_name in includable_zcml:
(Pdb)
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(26)includeZCMLGroup()
-> includable_package = resolve(dotted_name)
(Pdb) l
  21  	
  22  	    for dotted_name in includable_zcml:
  23  	        log.debug('including file %s from package %s at %s', 
filename, dotted_name, zcml_context)
  24  	
  25  	    for dotted_name in includable_zcml:
  26  ->	        includable_package = resolve(dotted_name)
  27  	        if override:
  28  	            includeOverrides(_context, filename, includable_package)
  29  	        else:
  30  	            include(_context, filename, includable_package)
  31  	
(Pdb) n
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(27)includeZCMLGroup()
-> if override:
(Pdb) pp includable_package
<module 'collective.xdv' from 
'/home/osc/osc/src/collective.xdv/collective/xdv/__init__.pyc'>
(Pdb) n
 > 
/home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(30)includeZCMLGroup()
-> include(_context, filename, includable_package)
(Pdb) s
--Call--

Now we're back into zope.configuration:

 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(487)include()
-> def include(_context, file=None, package=None, files=None):
(Pdb) n
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(493)include()
-> if files:
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(496)include()
-> elif not file:
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(502)include()
-> if package and (package.__name__ == 'zope.app'):
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(524)include()
-> context = config.GroupingContextDecorator(_context)
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(525)include()
-> if package is not None:
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(526)include()
-> context.package = package
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(527)include()
-> context.basepath = None
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(529)include()
-> if files:
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(535)include()
-> paths = [context.path(file)]
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(537)include()
-> for path in paths:
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(538)include()
-> if context.processFile(path):
(Pdb) l
533  	        paths = [path for (l, path) in paths]
534  	    else:
535  	        paths = [context.path(file)]
536  	
537  	    for path in paths:
538  ->	        if context.processFile(path):
539  	            f = openInOrPlain(path)
540  	            logger.debug("include %s" % f.name)
541  	
542  	            context.basepath = os.path.dirname(path)
543  	            context.includepath = _context.includepath + (f.name, )
(Pdb) n
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(539)include()
-> f = openInOrPlain(path)
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(540)include()
-> logger.debug("include %s" % f.name)
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(542)include()
-> context.basepath = os.path.dirname(path)
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(543)include()
-> context.includepath = _context.includepath + (f.name, )
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(544)include()
-> _context.stack.append(config.GroupingStackItem(context))
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(546)include()
-> processxmlfile(f, context)
(Pdb) s
--Call--
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(367)processxmlfile()
-> def processxmlfile(file, context, testing=False):
(Pdb) n
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(372)processxmlfile()
-> src = InputSource(getattr(file, 'name', '<string>'))
(Pdb) l
367  	def processxmlfile(file, context, testing=False):
368  	    """Process a configuration file
369  	
370  	    See examples in tests/text_xmlconfig.py
371  	    """
372  ->	    src = InputSource(getattr(file, 'name', '<string>'))
373  	    src.setByteStream(file)
374  	    parser = make_parser()
375  	    parser.setContentHandler(ConfigurationHandler(context, 
testing=testing))
376  	    parser.setFeature(feature_namespaces, True)
377  	    try:
(Pdb) n
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(373)processxmlfile()
-> src.setByteStream(file)
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(374)processxmlfile()
-> parser = make_parser()
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(375)processxmlfile()
-> parser.setContentHandler(ConfigurationHandler(context, testing=testing))
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(376)processxmlfile()
-> parser.setFeature(feature_namespaces, True)
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(377)processxmlfile()
-> try:
(Pdb)
 > 
/home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(378)processxmlfile()
-> parser.parse(src)
(Pdb) l
373  	    src.setByteStream(file)
374  	    parser = make_parser()
375  	    parser.setContentHandler(ConfigurationHandler(context, 
testing=testing))
376  	    parser.setFeature(feature_namespaces, True)
377  	    try:
378  ->	        parser.parse(src)
379  	    except SAXParseException:
380  	        raise ZopeSAXParseException(sys.exc_info()[1]), None, 
sys.exc_info()[2]
381  	
382  	
383  	def openInOrPlain(filename):
(Pdb) s
--Call--
 > /usr/lib64/python2.6/xml/sax/expatreader.py(100)parse()
-> def parse(self, source):
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/expatreader.py(102)parse()
-> source = saxutils.prepare_input_source(source)
(Pdb)
 > /usr/lib64/python2.6/xml/sax/expatreader.py(104)parse()
-> self._source = source
(Pdb)
 > /usr/lib64/python2.6/xml/sax/expatreader.py(105)parse()
-> self.reset()
(Pdb) l
100  	    def parse(self, source):
101  	        "Parse an XML document from a URL or an InputSource."
102  	        source = saxutils.prepare_input_source(source)
103  	
104  	        self._source = source
105  ->	        self.reset()
106  	        self._cont_handler.setDocumentLocator(ExpatLocator(self))
107  	        xmlreader.IncrementalParser.parse(self, source)
108  	
109  	    def prepareParser(self, source):
110  	        if source.getSystemId() is not None:
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/expatreader.py(106)parse()
-> self._cont_handler.setDocumentLocator(ExpatLocator(self))
(Pdb)
 > /usr/lib64/python2.6/xml/sax/expatreader.py(107)parse()
-> xmlreader.IncrementalParser.parse(self, source)
(Pdb) s
--Call--
 > /usr/lib64/python2.6/xml/sax/xmlreader.py(115)parse()
-> def parse(self, source):
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/xmlreader.py(116)parse()
-> import saxutils
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/xmlreader.py(117)parse()
-> source = saxutils.prepare_input_source(source)
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/xmlreader.py(119)parse()
-> self.prepareParser(source)
(Pdb)
 > /usr/lib64/python2.6/xml/sax/xmlreader.py(120)parse()
-> file = source.getByteStream()
(Pdb) l
115  	    def parse(self, source):
116  	        import saxutils
117  	        source = saxutils.prepare_input_source(source)
118  	
119  	        self.prepareParser(source)
120  ->	        file = source.getByteStream()
121  	        buffer = file.read(self._bufsize)
122  	        while buffer != "":
123  	            self.feed(buffer)
124  	            buffer = file.read(self._bufsize)
125  	        self.close()
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/xmlreader.py(121)parse()
-> buffer = file.read(self._bufsize)
(Pdb)
 > /usr/lib64/python2.6/xml/sax/xmlreader.py(122)parse()
-> while buffer != "":

This is the full ZCML that it's loading:

(Pdb) print buffer
<configure
     xmlns="http://namespaces.zope.org/zope"
     xmlns:gs="http://namespaces.zope.org/genericsetup"
     xmlns:browser="http://namespaces.zope.org/browser"
     xmlns:zcml="http://namespaces.zope.org/zcml"
     xmlns:i18n="http://namespaces.zope.org/i18n"
     i18n_domain="collective.xdv">

     <i18n:registerTranslations directory="locales"/>

     <include package="plone.app.registry" />
     <include package="plone.transformchain" />

     <gs:registerProfile
         name="default"
         title="XDV theme support"
         description="Installs a control panel to allow on-the-fly 
theming with xdv"
         directory="profiles/default"
         for="Products.CMFPlone.interfaces.IPloneSiteRoot"
         provides="Products.GenericSetup.interfaces.EXTENSION"
         />

     <!-- Transform order 8850 - apply XDV transform -->
     <adapter
         name="collective.xdv.transform"
         factory=".transform.XDVTransform"
         />

     <subscriber
         for=".interfaces.ITransformSettings
               plone.registry.interfaces.IRecordModifiedEvent"
         handler=".transform.invalidateCache"
         />

     <browser:page
         name="xdv-settings"
         for="Products.CMFPlone.interfaces.IPloneSiteRoot"
         class=".browser.TransformSettingsControlPanel"
         permission="cmf.ManagePortal"
         />

     <!-- Set X-XDV header in the request if XDV is enabled -->
     <subscriber
         for="ZPublisher.interfaces.IPubAfterTraversal"
         handler=".header.setHeader"
         />

     <!-- Utility view - use in portal_css or similar as 
portal/@@xdv-check/enabled" -->
     <browser:page
         name="xdv-check"
         for="Products.CMFPlone.interfaces.IPloneSiteRoot"
         class=".browser.Utility"
         permission="zope.Public"
         allowed_attributes="enabled domain_enabled"
         />

     <browser:resource
         name="collective.xdv.gif"
         image="icon.gif"
         />

</configure>
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/xmlreader.py(123)parse()
-> self.feed(buffer)
(Pdb) l
118  	
119  	        self.prepareParser(source)
120  	        file = source.getByteStream()
121  	        buffer = file.read(self._bufsize)
122  	        while buffer != "":
123  ->	            self.feed(buffer)
124  	            buffer = file.read(self._bufsize)
125  	        self.close()
126  	
127  	    def feed(self, data):
128  	        """This method gives the raw XML data in the data parameter to
(Pdb) s
--Call--
 > /usr/lib64/python2.6/xml/sax/expatreader.py(196)feed()
-> def feed(self, data, isFinal = 0):
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/expatreader.py(197)feed()
-> if not self._parsing:
(Pdb) l
192  	                                            name)
193  	
194  	    # IncrementalParser methods
195  	
196  	    def feed(self, data, isFinal = 0):
197  ->	        if not self._parsing:
198  	            self.reset()
199  	            self._parsing = 1
200  	            self._cont_handler.startDocument()
201  	
202  	        try:
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/expatreader.py(198)feed()
-> self.reset()
(Pdb)
 > /usr/lib64/python2.6/xml/sax/expatreader.py(199)feed()
-> self._parsing = 1
(Pdb)
 > /usr/lib64/python2.6/xml/sax/expatreader.py(200)feed()
-> self._cont_handler.startDocument()
(Pdb)
 > /usr/lib64/python2.6/xml/sax/expatreader.py(202)feed()
-> try:
(Pdb) l
197  	        if not self._parsing:
198  	            self.reset()
199  	            self._parsing = 1
200  	            self._cont_handler.startDocument()
201  	
202  ->	        try:
203  	            # The isFinal parameter is internal to the expat reader.
204  	            # If it is set to true, expat will check validity of 
the entire
205  	            # document. When feeding chunks, they are not normally 
final -
206  	            # except when invoked from close.
207  	            self._parser.Parse(data, isFinal)
(Pdb) n
 > /usr/lib64/python2.6/xml/sax/expatreader.py(207)feed()
-> self._parser.Parse(data, isFinal)
(Pdb) l
202  	        try:
203  	            # The isFinal parameter is internal to the expat reader.
204  	            # If it is set to true, expat will check validity of 
the entire
205  	            # document. When feeding chunks, they are not normally 
final -
206  	            # except when invoked from close.
207  ->	            self._parser.Parse(data, isFinal)
208  	        except expat.error, e:
209  	            exc = SAXParseException(expat.ErrorString(e.code), e, 
self)
210  	            # FIXME: when to invoke error()?
211  	            self._err_handler.fatalError(exc)
212  	
(Pdb) n

Boom!

(python-env)osc@lwpn-osb-webback-2:~/osc> echo $?
0

I stepped into the self.parser.Parse() line to get some more context 
(this is C code):

 > /usr/lib64/python2.6/xml/sax/expatreader.py(207)feed()
-> self._parser.Parse(data, isFinal)
(Pdb) s
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()
(Pdb) n
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None
(Pdb) n
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None
(Pdb) n
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None
(Pdb) n
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None
(Pdb) n
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None
(Pdb) n
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None
(Pdb) n
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None
(Pdb) n
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb) n
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Return--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None
(Pdb)
--Call--
 > 
/usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None
(Pdb)

BOOM.

So this is still in pyexpat C code as far as I can tell. :-(

Martin

_______________________________________________
Zope-Dev maillist  -  [email protected]
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.