Hello Alberto, i am puzzled by the behavior as well. Now the exceptions are even before the parse method is called. the initialize itself crashes. I tried the debugging with the exceptions checked. Attached is the snapshot of the exception. the crash is in the _malloc_base function of malloc.c. this is inline with the call stack in windbg: MemoryManagerImpl::allocate which is crashing.
My understanding is the initialze call is not even dependent on the string/file to be parsed. regards, Pranav On Wed, Dec 3, 2008 at 4:57 PM, Alberto Massari <[EMAIL PROTECTED]>wrote: > Pranav, > I am puzzled by your message: you were previously reporting a non-Xerces > exception thrown by the parse() method, now you say you have the same > non-Xerces exception when invoking Initialize(). But, in order to reach the > parse() method, you had to invoke Initialize(), so why does this crash occur > only now? > In the end, your code looks fine and will probably run ok on every machine > I can compile it on; you should *really* start debugging your code with the > VS2005 debugger, after invoking Debug | Exceptions and checking the "Thrown" > checkbox next to the "C++ exception" and "Win32 exceptions" entries. > > Alberto > > > Pranav Savkur wrote: > >> hello has any1 faced this problem? >> >> On Mon, Dec 1, 2008 at 6:14 PM, Pranav Savkur <[EMAIL PROTECTED] >> >wrote: >> >> >> >>> Hello Alberto, >>> the XMLPlatformUtils::Initialize() function leads to a crash in >>> Xerces 2.8 >>> The code is like: >>> >>> try >>> { >>> XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); >>> >>> } >>> catch (XERCES_CPP_NAMESPACE::XMLException& e) >>> { >>> CString cstrTraceMsg; >>> cstrTraceMsg.Format(_T("ERROR: Internal DOM Error - An error >>> occurred during creation of output transcoder. Exception code: %d Msg is >>> : >>> %s"), e.getCode(),e.getMessage()); >>> >>> TRACE_ERROR(CLString(cstrTraceMsg),ERR_DOM_OPERATION_FAILED); >>> } >>> catch(...) >>> { >>> TRACE_INFO("CSPVXMLParserWrapper::CreateDOMTree() >>> XMLPlatformUtils::Initialize - threw an exception"); >>> } >>> I always get the control into the generic catch block than the >>> XMLException >>> catch >>> >>> when could this happen? any idea? >>> >>> regards, >>> Pranav >>> >>> On Mon, Dec 1, 2008 at 6:00 PM, Alberto Massari <[EMAIL PROTECTED] >>> >wrote: >>> >>> >>> >>>> Pranav Savkur wrote: >>>> >>>> >>>> >>>>> hi alberto, >>>>> what is the encoding i have to set for the CT2CA object? how do i >>>>> do >>>>> this? please let me know >>>>> >>>>> >>>>> >>>>> >>>> It all depends on what that class does (and being a user defined class, >>>> you should know it): I can only guess it's US-ASCII, i.e. >>>> >>>> memBufIS->setEncoding(XMLUni::fgUSASCIIEncodingString); >>>> >>>> But you can get better informations by debugging your application and >>>> finding out what exception is being thrown and which part of the parser >>>> throws it. >>>> >>>> Alberto >>>> >>>> >>>> regards, >>>> >>>> >>>>> Pranav >>>>> >>>>> On Mon, Dec 1, 2008 at 3:31 PM, Alberto Massari < >>>>> [EMAIL PROTECTED] >>>>> >>>>> >>>>>> wrote: >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>>> Pranav Savkur wrote: >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> Hello Alberto, thanks for replying. >>>>>>> 1.i do hav an XMLException block but the control does not come here >>>>>>> 2. i have deleted the wrapper4inputsource now >>>>>>> 3.its just that the m_XMLFileName in this case contains the XML >>>>>>> string >>>>>>> itself and not really the file name. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> If m_XMLFileName contains an XML string, and you really need to >>>>>> convert >>>>>> it >>>>>> to a different encoding using the CT2CA object, you should invoke >>>>>> setEncoding on the MemBufInputSource to tell the parser to ignore the >>>>>> encoding declaration contained in the XML stream. >>>>>> If this also fails, you should just try running the program in the >>>>>> debugger >>>>>> and see what exception is really thrown. >>>>>> >>>>>> Alberto >>>>>> >>>>>> >>>>>> Is it correct the way the parameters to MembufInput source are data >>>>>> typed? >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> We are using VS2005 with Xerces 2.8 >>>>>>> >>>>>>> On Mon, Dec 1, 2008 at 3:11 PM, Alberto Massari < >>>>>>> [EMAIL PROTECTED] >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> A few things that you should check: >>>>>>>> 1) add a catch handler for XMLException, and check what getMessage >>>>>>>> says; >>>>>>>> using only the catch(...) will not give you any information on the >>>>>>>> real >>>>>>>> cause of the error >>>>>>>> 2) why are you declaring a Wrapper4InputSource object if you are not >>>>>>>> using >>>>>>>> it? >>>>>>>> 3) the MemBufInputSource class must be used to hold an XML fragment, >>>>>>>> but >>>>>>>> you are constructing it around a variable named m_XMLFileName; if >>>>>>>> this >>>>>>>> variable holds a file name (instead of the file content) you should >>>>>>>> use >>>>>>>> LocalFileInputSource >>>>>>>> >>>>>>>> Alberto >>>>>>>> >>>>>>>> >>>>>>>> Pranav Savkur wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> I have one implementation in Xerces C++ 2.8 where in I have this >>>>>>>>> code: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> try >>>>>>>>>> { >>>>>>>>>> //const XMLCh* const bufID = NULL; >>>>>>>>>> const XMLCh *const bufId = _T("SPVoice"); >>>>>>>>>> //static const TCHAR* bufID = "SPVoice"; >>>>>>>>>> CT2CA pszConvertedAnsiString (m_XMLFileName); >>>>>>>>>> std::string strStd (pszConvertedAnsiString); >>>>>>>>>> >>>>>>>>>> const char* pStr = strStd.c_str(); >>>>>>>>>> //char* TCHAR = StringToChar(m_XMLFileName); >>>>>>>>>> >>>>>>>>>> TRACE_INFO("CSPVXMLParserWrapper::CreateDOMTree() converted >>>>>>>>>> StringToChar"); >>>>>>>>>> >>>>>>>>>> MemBufInputSource* memBufIS = new >>>>>>>>>> MemBufInputSource( >>>>>>>>>> (const XMLByte *)pStr >>>>>>>>>> ,strlen(pStr) >>>>>>>>>> , bufId >>>>>>>>>> , false >>>>>>>>>> ); >>>>>>>>>> >>>>>>>>>> TRACE_INFO("CSPVXMLParserWrapper::CreateDOMTree() formed >>>>>>>>>> MemBufInputSourceObject Successfully"); >>>>>>>>>> >>>>>>>>>> m_pDOMParser->setDoNamespaces(false); >>>>>>>>>> TRACE_INFO("Entering >>>>>>>>>> CSPVXMLParserWrapper::CreateDOMTree() SetDoNamespace set to >>>>>>>>>> false"); >>>>>>>>>> >>>>>>>>>> Wrapper4InputSource wrap(memBufIS, false); >>>>>>>>>> >>>>>>>>>> m_pDOMParser->parse(*memBufIS); >>>>>>>>>> } >>>>>>>>>> catch (...) >>>>>>>>>> { >>>>>>>>>> cstrTraceMsg.Format(_T("ERROR: Internal Error >>>>>>>>>> - Unexpected exception during parsing: %s "), m_XMLFileName); >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> TRACE_ERROR(CLString(cstrTraceMsg),ERR_FAILURE); >>>>>>>>>> sifRetCode = ERR_FAILURE; >>>>>>>>>> m_strErrorString = _T("Generic Exception >>>>>>>>>> During Parsing the input XML File.Please check if the XML input >>>>>>>>>> conforms to the schema"); >>>>>>>>>> >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> At the m_pDOMParser->parse(*memBufIS); The control goes into the >>>>>>>>>> catch >>>>>>>>>> block. >>>>>>>>>> Can you point out any probs in the code? Without the >>>>>>>>>> Wrapper4InputSource wrap(memBufIS, false);, this code was working >>>>>>>>>> in >>>>>>>>>> Xerces 2.2 of C++ >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>> >>>> >>> >> >> > >