[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#340563: cppunit: [m68k] FTBFS: Illegal instruction ${dir}$tst]



On Wed, Dec 07, 2005 at 11:04:44PM +0100, Richard Zidlicky wrote:
> On Mon, Dec 05, 2005 at 11:35:47PM -0500, Steve M. Robbins wrote:

> > The problem turns out to be a failing unit test on
> > m68k only, apparently due to a buggy compiler or libstdc++.
> > 
> > I built cppunit on crest and ran the unit tests.  The program
> > stops with SIGILL.  Here's the backtrace from gdb and an
> > attempt to figure out what the illegal instruction is.  Unfortunately,
> > libstdc++ doesn't have all the supports for debugging.
> > 
> > 
> > (gdb) bt
> > #0  0xc0134bcc in ?? () from /usr/lib/libstdc++.so.6
> > #1  0x8004ef84 in checkXmlEqual (expectedXml=@0xeffff89a, actualXml=@0xeffff896,
> >     sourceLine=@0xeffff856) at XmlUniformiser.cpp:38
> 
> What kind of operation in XmlUniformiser.cpp:38 jumped into libstdc++?

That line is a call to std::ostringstream::str().


> > (gdb) x/i 0xc0134bcc
> > 0xc0134bcc <_ZTSPKe+121258>:    014
> 
> could be any kind of data or garbage, probably not instructions.
> Try this to see what you are looking at:
> 
>   disassemble 0xc0134bac 0xc0134bec
>   x/100c 0xc0134bcc

XmlUniformiserTest::testAssertXmlEqual
Program received signal SIGILL, Illegal instruction.
0xc0134bcc in ?? () from /usr/lib/libstdc++.so.6

(gdb) disassemble 0xc0134bac 0xc0134bec
Dump of assembler code from 0xc0134bac to 0xc0134bec:
0xc0134bac <_ZTSPKe+121226>:    orib #0,%d0
0xc0134bb0 <_ZTSPKe+121230>:    orib #0,%d0
0xc0134bb4 <_ZTSPKe+121234>:    orib #0,%d0
0xc0134bb8 <_ZTSPKe+121238>:    orib #0,%d0
0xc0134bbc <_ZTSPKe+121242>:    orib #0,%d0
0xc0134bc0 <_ZTSPKe+121246>:    orib #0,%d0
0xc0134bc4 <_ZTSPKe+121250>:    orib #0,%d0
0xc0134bc8 <_ZTSPKe+121254>:    orib #0,%d0
0xc0134bcc <_ZTSPKe+121258>:    014
0xc0134bce <_ZTSPKe+121260>:    divuw %a4@-,%d5
0xc0134bd0 <_ZTSPKe+121262>:    andb %d1,%d0
0xc0134bd2 <_ZTSPKe+121264>:    movew %a0@-,%fp@(00000000,%a4:w)
0xc0134bd6 <_ZTSPKe+121268>:    divsw %a4@-,%d5
0xc0134bd8 <_ZTSPKe+121270>:    0140012
0xc0134bda <_ZTSPKe+121272>:    macw %d4l,%a2l,%acc1
0xc0134bde <_ZTSPKe+121276>:    macw %a2l,%a4l,%a0@+,%a2
0xc0134be2 <_ZTSPKe+121280>:    macw %a2l,%a4l,%a4@(-23296),%a2
0xc0134be8 <_ZTSPKe+121286>:    0140012
0xc0134bea <_ZTSPKe+121288>:    0122424
End of assembler dump.

(gdb) x/100c 0xc0134bcc
0xc0134bcc <_ZTSPKe+121258>:    0 '\0'  12 '\f' -118 '\212'     -28 'ä' -64 'À' 1 '\001'        61 '='    -96 ' '
0xc0134bd4 <_ZTSPKe+121266>:    -64 'À' 0 '\0'  -117 '\213'     -28 'ä' -64 'À' 10 '\n' -92 '¤' -60 'Ä'
0xc0134bdc <_ZTSPKe+121274>:    -64 'À' 10 '\n' -92 '¤' -40 'Ø' -64 'À' 10 '\n' -92 '¤' -20 'ì'
0xc0134be4 <_ZTSPKe+121282>:    -64 'À' 10 '\n' -91 '¥' 0 '\0'  -64 'À' 10 '\n' -91 '¥' 20 '\024'
0xc0134bec <_ZTSPKe+121290>:    -64 'À' 10 '\n' -91 '¥' 40 '('  -64 'À' 10 '\n' -91 '¥' 60 '<'
0xc0134bf4 <_ZTSPKe+121298>:    -64 'À' 10 '\n' -91 '¥' 80 'P'  -64 'À' 10 '\n' -91 '¥' 100 'd'
0xc0134bfc <_ZTSPKe+121306>:    -64 'À' 12 '\f' 126 '~' 106 'j' -64 'À' 10 '\n' -91 '¥' -116 '\214'
0xc0134c04 <_ZTSPKe+121314>:    -64 'À' 10 '\n' -91 '¥' -96 ' ' -64 'À' 10 '\n' -91 '¥' -76 '´'
0xc0134c0c <_ZTSPKe+121322>:    -64 'À' 10 '\n' -91 '¥' -56 'È' -64 'À' 10 '\n' -91 '¥' -36 'Ü'
0xc0134c14 <_ZTSPKe+121330>:    -64 'À' 10 '\n' -91 '¥' -16 'ð' -64 'À' 12 '\f' -123 '\205'     -128 '\200'
0xc0134c1c <_ZTSPKe+121338>:    -64 'À' 10 '\n' -90 '¦' 24 '\030'       -64 'À' 10 '\n' -90 '¦' 44 ','
0xc0134c24 <_ZTSPKe+121346>:    -64 'À' 10 '\n' -90 '¦' 64 '@'  -64 'À' 10 '\n' -90 '¦' 84 'T'
0xc0134c2c <_ZTSPKe+121354>:    -64 'À' 10 '\n' -90 '¦' 104 'h'


Note that I'm way over my limit of comprehension.  I left the compiled
code on crest in /home/smr/cppunit-1.10.2.  It's world readable and
accessible, and I invite interested parties to log in, copy it,
and run the debugger on it.  Should be more efficient than sending
me gdb commands by email ;-)

Cheers,
-Steve



Reply to: