I have a testprogram which tries to parse an example xml on SLES11, but the result is a segmentation fault. However if I link without libdb2 than it works fine.
g++-8.3 -o testXmlParser main.cpp -m31 -lxml2
Added the -ldb2 and I get the mentioned segmentation fault and before that a "1: parser error : Document is empty"
g++-8.3 -o testXmlParser main.cpp -m31 -lxml2 -ldb2
My code:
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <iostream>
int main ()
{
xmlDoc *doc = NULL;
xmlNode *root_element = NULL;
std::cout << "log1" << std::endl;
doc = xmlParseEntity("/tmp/testXML.xml");
std::cout << "log2" << std::endl;
root_element = xmlDocGetRootElement(doc);
std::cout << "root element: "<<root_element->name << std::endl ;
return 0;
}
And the callstack:
#0 0x7b30399e in free () from /lib/libc.so.6
#1 0x7bb3bb92 in destroy () from /data/db2inst1/sqllib/lib32/libdb2.so.1
#2 0x7bb3cdf4 in gzclose () from /data/db2inst1/sqllib/lib32/libdb2.so.1
#3 0x7d1896f0 in ?? () from /usr/lib/libxml2.so.2
#4 0x7d187e80 in xmlFreeParserInputBuffer () from /usr/lib/libxml2.so.2
#5 0x7d1602f4 in xmlFreeInputStream () from /usr/lib/libxml2.so.2
#6 0x7d160336 in xmlFreeParserCtxt () from /usr/lib/libxml2.so.2
#7 0x7d17427c in xmlSAXParseEntity () from /usr/lib/libxml2.so.2
#8 0x00400c02 in main ()
Could you help me solve this problem?
This is a test program, the db2 is not used here, but used in our software where this problem comes from.
.../sqllib/lib32/...it is a 32bits distribution ?