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