You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@xerces.apache.org by Jorge Pozo Ramirez <j....@externo.mju.es> on 2001/12/13 14:28:34 UTC
Bug on XercesC 1.5.2 ???
Hi there.
I'm having troubles with Xerces and multiple file parsing. I'm working
on SCO OpenServer, with 1_5_2 version of XercesC.
On the same program, I DomParse a XML file. I keep the Document in a
DOM_Document object, and then I delete the parser. Then I create a new
DomParser and repeat it three times.
Everything goes OK, but when the program ends, and destructors are
working, I receive a Memory Fault from
XMLPlatformUtils::atomicDecrement ()
This is the call stack:
(gdb) bt
#0 0x8025b096 in XMLPlatformUtils::atomicDecrement ()
from /usr1/xerces-c-src1_5_2/lib/libxerces-c1_5_2.so
#1 0x80159ad7 in DOMString::~DOMString ()
from /usr1/xerces-c-src1_5_2/lib/libxerces-c1_5_2.so
#2 0x80160628 in DStringPool::~DStringPool ()
from /usr1/xerces-c-src1_5_2/lib/libxerces-c1_5_2.so
#3 0x80183dc9 in DocumentImpl::~DocumentImpl ()
from /usr1/xerces-c-src1_5_2/lib/libxerces-c1_5_2.so
#4 0x801d202e in NodeImpl::deleteIf ()
from /usr1/xerces-c-src1_5_2/lib/libxerces-c1_5_2.so
#5 0x801857aa in DocumentImpl::unreferenced ()
from /usr1/xerces-c-src1_5_2/lib/libxerces-c1_5_2.so
#6 0x801f1390 in RefCountedImpl::removeRef ()
from /usr1/xerces-c-src1_5_2/lib/libxerces-c1_5_2.so
#7 0x8015e4ed in DOM_Node::~DOM_Node ()
from /usr1/xerces-c-src1_5_2/lib/libxerces-c1_5_2.so
#8 0x8015c29d in DOM_Document::~DOM_Document ()
from /usr1/xerces-c-src1_5_2/lib/libxerces-c1_5_2.so
#9 0x804d949 in main (argC=6, argV=0x8047ca8) at almacena.cpp:961
#10 0x804c6eb in _start ()
The pseudocode of my app is as follows:
main{
Xerces::Initialize;
DOMParser parser = new DOMParser;
DOMDocument doc1;
DOMDocument doc2;
DOMDocument doc3;
[...]
parser->parse(file1);
doc1 = parser->getDocument();
delete parser;
parser = new DOMParser;
parser->parse(file2);
doc2 = parser->getDocument();
delete parser;
parser = new DOMParser;
parser->parse(file3);
doc3 = parser->getDocument();
delete parser;
[...]
printDoc1; // Almost same code as DOMPrint
printDoc2; // Almost same code as DOMPrint
printDoc3; // Almost same code as DOMPrint
[...]
Xerces::Terminate;
}
Is there something I'm doing wrong?. Thank you.
Jorge
Jorge Pozo Ramírez
Accenture - Spain
Technology Consulting Services
Government GMU
email: jorge.pozo.ramirez@accenture.com
------------------------------------------------------------
Subdirección General de Informática
- Ministerio de Justicia -
Madrid, España
email: j.pozo@externo.mju.es
Tel: 913902646
**********************************************************************
Este mensaje ha sido analizado con una herramienta de
deteccion de virus para su seguridad.
Ministerio de Justicia
www.mju.es
**********************************************************************
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org