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++
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>
>

Reply via email to