Ashley Zinyk wrote:
Hi,
We ran into a problem running Xalan-C 1.10 that I don't know how to solve.
The environment is AIX 5.2. We compiled our code with VACPP 5.0, and we
used XercesC, XalanC, and ICU 3.2.1 libraries compiled with VACPP 6.0 (with
-qnamemangling=v5).
We built XalanC like this:
./runConfigure -paix -cxlc_r -xxlC_r -b32 -d -m icu "-z -qstaticinline -z
-qnamemangling=v5"
Hi Ashley,
You might want to try compiling the Xalan-C, Xerces-C, and the ICU with
VACPP 5.0 to see if perhaps there is some compatibility issue between the
two compilers.
It fails on line 138 of XalanDocumentPrefixResolver.cpp:
120
XalanDocumentPrefixResolver::NamespaceNodesTreeWalker::startNode(const
XalanNode* node)
121 {
122 assert(node != 0);
123
124 switch(node->getNodeType())
125 {
126 case XalanNode::ELEMENT_NODE:
127 {
128 const XalanElement* theElementNode =
129 #if defined(XALAN_OLD_STYLE_CASTS)
130 (const XalanElement*)node;
131 #else
132 static_cast<const
XalanElement*>(node);
133 #endif
134
135 const XalanNamedNodeMap* const atts =
theElementNode->getAttributes();
136 assert(atts != 0);
137
138 const unsigned int theSize =
atts->getLength();
Illegal instruction in . at 0x0 ($t1)
0x00000000 00000000 Invalid opcode.
So the code is attempting to execute an instruction at address 0, which
means there's probably a null function pointer.
"atts" is set up like this:
stopped in xalanc_1_10::XalanSourceTreeElementNA::getAttributes() const at
line 93
90 const XalanNamedNodeMap*
91 XalanSourceTreeElementNA::getAttributes() const
92 {
93 return &s_emptyAttributes;
94 }
(dbx) print atts
0x2036d0d8
It could be a problem with the virtual function table, so I would look at
the documentation for VACPP 6.0 to see if there are additional
compatibility switches that you might need. If you look at the
disassembly, you should be able to verify if the call to the virtual
function is what's crashing.
Dave