Hi all,
While purifying one of our apps in order to find memory management
problems we have come across a "freeing of unallocated memory" in
Xalan-C. We were able to consistently reproduce this with the
"SimpleTransform" sample app from the Xalan-C distribution.
Since our application is supposed to be running uninterrupted for days,
this is very likely to cause problems.
According to purify the freeing is happening in
FormatterToXML::FormatterToXML(...), the allocation of the memory in
XalanDOMString::append(). I was actually wondering whether this is
related to bug http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6270
or the fix of that bug (which we are already using).
Our environment:
XalanC 1.3
XercesC 1.6
Solaris 2.6
Sun Workshop 6.2
Purify 5.1
Has anybody similar findings? Workarounds?
Attached a file with the purify output from running SimpleTransform.
Regards,
Tom
__________________________________________________
Do You Yahoo!?
Yahoo! Movies - coverage of the 74th Academy Awards�
http://movies.yahoo.com/
FUM: Freeing unallocated memory
This is occurring while in:
free [rtlib.o]
c2k6FPv_v___1 [libCrun.so.1]
void operator delete(void*) [rtlib.o]
FormatterToXML::FormatterToXML(Writer&,const
XalanDOMString&,bool,int,const XalanDOMString&,const XalanDOMString&,const
XalanDOMString&,const XalanDOMString&,bool,const
XalanDOMString&,FormatterListener::eFormat,bool) [libxalan-c1_3.so]
FormatterToXML*StylesheetExecutionContextDefault::createFormatterToXML(Writer&,const
XalanDOMString&,bool,int,const XalanDOMString&,const XalanDOMString&,const
XalanDOMString&,const XalanDOMString&,bool,const XalanDOMString&)
[libxalan-c1_3.so]
FormatterListener*StylesheetRoot::setupFormatterListener(XSLTResultTarget&,StylesheetExecutionContext&)const
[libxalan-c1_3.so]
void
StylesheetRoot::process(XalanNode*,XSLTResultTarget&,StylesheetExecutionContext&)const
[libxalan-c1_3.so]
void XSLTEngineImpl::process(const XSLTInputSource&,const
XSLTInputSource&,XSLTResultTarget&,StylesheetConstructionContext&,StylesheetExecutionContext&)
[libxalan-c1_3.so]
int XalanTransformer::transform(const XalanParsedSource&,const
XSLTInputSource&,const XSLTResultTarget&) [libxalan-c1_3.so]
int XalanTransformer::transform(const XSLTInputSource&,const
XSLTInputSource&,const XSLTResultTarget&) [libxalan-c1_3.so]
main [SimpleTransform.cpp]
_start [crt1.o]
Attempting to free block at 0x14de58 already freed.
This block was allocated from:
malloc [rtlib.o]
c2n6Fi_Pv___1 [libCrun.so.1]
void*operator new(unsigned) [rtlib.o]
void std::vector<unsigned short,std::allocator<unsigned short>
>::reserve(unsigned) [XalanDOMString.cpp]
XalanDOMString&XalanDOMString::append(const unsigned
short*,unsigned) [libxalan-c1_3.so]
XalanDOMString::XalanDOMString(const unsigned short*,unsigned)
[libxalan-c1_3.so]
FormatterToXML::FormatterToXML(Writer&,const
XalanDOMString&,bool,int,const XalanDOMString&,const XalanDOMString&,const
XalanDOMString&,const XalanDOMString&,bool,const
XalanDOMString&,FormatterListener::eFormat,bool) [libxalan-c1_3.so]
FormatterToXML*StylesheetExecutionContextDefault::createFormatterToXML(Writer&,const
XalanDOMString&,bool,int,const XalanDOMString&,const XalanDOMString&,const
XalanDOMString&,const XalanDOMString&,bool,const XalanDOMString&)
[libxalan-c1_3.so]
FormatterListener*StylesheetRoot::setupFormatterListener(XSLTResultTarget&,StylesheetExecutionContext&)const
[libxalan-c1_3.so]
void
StylesheetRoot::process(XalanNode*,XSLTResultTarget&,StylesheetExecutionContext&)const
[libxalan-c1_3.so]
void XSLTEngineImpl::process(const XSLTInputSource&,const
XSLTInputSource&,XSLTResultTarget&,StylesheetConstructionContext&,StylesheetExecutionContext&)
[libxalan-c1_3.so]
int XalanTransformer::transform(const XalanParsedSource&,const
XSLTInputSource&,const XSLTResultTarget&) [libxalan-c1_3.so]
int XalanTransformer::transform(const XSLTInputSource&,const
XSLTInputSource&,const XSLTResultTarget&) [libxalan-c1_3.so]
main [SimpleTransform.cpp]
_start [crt1.o]
There have been 1 frees since this block was freed from:
free [rtlib.o]
c2k6FPv_v___1 [libCrun.so.1]
void operator delete(void*) [rtlib.o]
FormatterToXML::FormatterToXML(Writer&,const
XalanDOMString&,bool,int,const XalanDOMString&,const XalanDOMString&,const
XalanDOMString&,const XalanDOMString&,bool,const
XalanDOMString&,FormatterListener::eFormat,bool) [libxalan-c1_3.so]
FormatterToXML*StylesheetExecutionContextDefault::createFormatterToXML(Writer&,const
XalanDOMString&,bool,int,const XalanDOMString&,const XalanDOMString&,const
XalanDOMString&,const XalanDOMString&,bool,const XalanDOMString&)
[libxalan-c1_3.so]
FormatterListener*StylesheetRoot::setupFormatterListener(XSLTResultTarget&,StylesheetExecutionContext&)const
[libxalan-c1_3.so]
void
StylesheetRoot::process(XalanNode*,XSLTResultTarget&,StylesheetExecutionContext&)const
[libxalan-c1_3.so]
void XSLTEngineImpl::process(const XSLTInputSource&,const
XSLTInputSource&,XSLTResultTarget&,StylesheetConstructionContext&,StylesheetExecutionContext&)
[libxalan-c1_3.so]
int XalanTransformer::transform(const XalanParsedSource&,const
XSLTInputSource&,const XSLTResultTarget&) [libxalan-c1_3.so]
int XalanTransformer::transform(const XSLTInputSource&,const
XSLTInputSource&,const XSLTResultTarget&) [libxalan-c1_3.so]
main [SimpleTransform.cpp]
_start [crt1.o]