[Zope-dev] Segfault in zope.configuration

Martin Aspeli optilude+lists at gmail.com
Tue Apr 6 22:25:08 EDT 2010


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 at 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



More information about the Zope-Dev mailing list