You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xerces.apache.org by Bryan Barnett <ba...@ll.mit.edu> on 2006/09/06 18:26:29 UTC

xerces-c 2.7.0, solaris 2.7, and gcc 4.0.3

Has anyone had any success with Xerces-C 2.7.0 on solaris 2.7 and the 
GCC 4.0.3 compilers?  How about GCC 4.0.3 on other platforms?

Xerces-C successfully compiles with g++ 4.0.3, but the DOMMemTest fails 
and applications using SAX fail intermittently (different points in the 
document each time) with "Illegal Instruction", "Bus Error", or seg 
faults. I am also using GNU binutils 2.16.1 instead of the native sun 
utilities.

Compiling xerces-c in debug mode, Purify repeatedly reports "Stack array 
bounds read" and write errors, and "Fatal core dump", at line 125 of 
DOMMemTest.cpp.  I have not been able to get Purify to report deeper 
into the library (?!).

Any insight would be appreciated. Thanks for your time.

Bryan

Re: xerces-c 2.7.0, solaris 2.7, and gcc 4.0.3

Posted by Alberto Massari <am...@datadirect.com>.
Hi Bryan,

At 10.05 11/09/2006 -0400, Bryan Barnett wrote:
>Hi Alberto,
>
>Sorry for the repeat of the original message.
>
>Yes, the intermittent crash even happened when compiled for debug 
>and running in gdb. It still crashed at a different place each time.
>
>Tried recompiling/re-instrumenting DOMMemTest this morning with 
>different purify options and got a little farther. Purify now 
>reports "Fatal core dump" at line 335 of DOMImplementationImpl.cpp 
>which is the end of 
>"DOMImplementationImpl::getDOMImplementation(unsigned short const*) 
>const". More helpful perhaps is the report of
>
>Address 0xffbedd30 is 4 bytes above stack pointer in function 
>non-virtual thunk to 
>xercesc_2_7::DOMImplementationImpl::getDOMImplementation(unsigned 
>short const*) const
>
>This makes me think linker problem, but I don't really know what a 
>"non-virtual thunk" is.
>
>Have you been able to run with GCC 4.0.3 on solaris? Perhaps it is 
>my combination with the GNU binutils.

No, I haven't used gcc 4.0.3 on Solaris 2.7; given the Purify error, 
and the fact that the crashes occurs at different places, it should 
be a memory corruption problem. The release notes for gcc say 
something like "the combination Sun as + GNU ld is known to cause 
memory corruption at runtime in some cases for C++ programs"; can you 
check you are really using the GNU binutils and no native Sun tools?

Alberto


>Bryan
>
>Alberto Massari wrote:
>>At 12.26 06/09/2006 -0400, Bryan Barnett wrote:
>>>Has anyone had any success with Xerces-C 2.7.0 on solaris 2.7 and 
>>>the GCC 4.0.3 compilers?  How about GCC 4.0.3 on other platforms?
>>>
>>>Xerces-C successfully compiles with g++ 4.0.3, but the DOMMemTest 
>>>fails and applications using SAX fail intermittently (different 
>>>points in the document each time) with "Illegal Instruction", "Bus 
>>>Error", or seg faults. I am also using GNU binutils 2.16.1 instead 
>>>of the native sun utilities.
>>>
>>>Compiling xerces-c in debug mode, Purify repeatedly reports "Stack 
>>>array bounds read" and write errors, and "Fatal core dump", at 
>>>line 125 of DOMMemTest.cpp.  I have not been able to get Purify to 
>>>report deeper into the library (?!).
>>>
>>>Any insight would be appreciated. Thanks for your time.
>>Hi Bryan,
>>in order to get Purify to report from inside the Xerces library, 
>>you should rebuild Xerces using the Purify front end (sorry, cannot 
>>give you more directions, as I haven't used Purify for a few 
>>years). However, it looks something is really broken, as line 125 is
>>         doc = 
>> DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument();
>>and I cannot see what could be crashing there.
>>Did you reproduce the intermittent crash while running inside gdb?
>>Alberto


Re: xerces-c 2.7.0, solaris 2.7, and gcc 4.0.3

Posted by Bryan Barnett <ba...@ll.mit.edu>.
Hi Alberto,

Sorry for the repeat of the original message.

Yes, the intermittent crash even happened when compiled for debug and 
running in gdb. It still crashed at a different place each time.

Tried recompiling/re-instrumenting DOMMemTest this morning with 
different purify options and got a little farther. Purify now reports 
"Fatal core dump" at line 335 of DOMImplementationImpl.cpp which is the 
end of "DOMImplementationImpl::getDOMImplementation(unsigned short 
const*) const". More helpful perhaps is the report of

Address 0xffbedd30 is 4 bytes above stack pointer in function 
non-virtual thunk to 
xercesc_2_7::DOMImplementationImpl::getDOMImplementation(unsigned short 
const*) const

This makes me think linker problem, but I don't really know what a 
"non-virtual thunk" is.

Have you been able to run with GCC 4.0.3 on solaris? Perhaps it is my 
combination with the GNU binutils.

Bryan

Alberto Massari wrote:
> At 12.26 06/09/2006 -0400, Bryan Barnett wrote:
>> Has anyone had any success with Xerces-C 2.7.0 on solaris 2.7 and the 
>> GCC 4.0.3 compilers?  How about GCC 4.0.3 on other platforms?
>>
>> Xerces-C successfully compiles with g++ 4.0.3, but the DOMMemTest 
>> fails and applications using SAX fail intermittently (different points 
>> in the document each time) with "Illegal Instruction", "Bus Error", or 
>> seg faults. I am also using GNU binutils 2.16.1 instead of the native 
>> sun utilities.
>>
>> Compiling xerces-c in debug mode, Purify repeatedly reports "Stack 
>> array bounds read" and write errors, and "Fatal core dump", at line 
>> 125 of DOMMemTest.cpp.  I have not been able to get Purify to report 
>> deeper into the library (?!).
>>
>> Any insight would be appreciated. Thanks for your time.
> 
> Hi Bryan,
> in order to get Purify to report from inside the Xerces library, you 
> should rebuild Xerces using the Purify front end (sorry, cannot give you 
> more directions, as I haven't used Purify for a few years). However, it 
> looks something is really broken, as line 125 is
> 
>         doc = 
> DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); 
> 
> 
> and I cannot see what could be crashing there.
> Did you reproduce the intermittent crash while running inside gdb?
> 
> Alberto

Re: xerces-c 2.7.0, solaris 2.7, and gcc 4.0.3

Posted by Alberto Massari <am...@datadirect.com>.
At 12.26 06/09/2006 -0400, Bryan Barnett wrote:
>Has anyone had any success with Xerces-C 2.7.0 on solaris 2.7 and 
>the GCC 4.0.3 compilers?  How about GCC 4.0.3 on other platforms?
>
>Xerces-C successfully compiles with g++ 4.0.3, but the DOMMemTest 
>fails and applications using SAX fail intermittently (different 
>points in the document each time) with "Illegal Instruction", "Bus 
>Error", or seg faults. I am also using GNU binutils 2.16.1 instead 
>of the native sun utilities.
>
>Compiling xerces-c in debug mode, Purify repeatedly reports "Stack 
>array bounds read" and write errors, and "Fatal core dump", at line 
>125 of DOMMemTest.cpp.  I have not been able to get Purify to report 
>deeper into the library (?!).
>
>Any insight would be appreciated. Thanks for your time.

Hi Bryan,
in order to get Purify to report from inside the Xerces library, you 
should rebuild Xerces using the Purify front end (sorry, cannot give 
you more directions, as I haven't used Purify for a few years). 
However, it looks something is really broken, as line 125 is

         doc = 
DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument();

and I cannot see what could be crashing there.
Did you reproduce the intermittent crash while running inside gdb?

Alberto