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: