Re: Issue with GDB 7.0 on MIPS(gcc 4.4.1)

Ian Lance Taylor
2011-11-14T06:50:56Z

> My GCC version 4.4.1. and here is source code.
>
> http://gingacdn.lavid.ufpb.br/projects/ginga-j/repository/revisions/7e233c1906624b0e01698415987aada3fd8c3fe4/entry/gingaj/jvm/src/share/javavm/runtime/gc/generational/gen_markcompact.c
>
> and here is backtrace.
>
> mips-gdb> bt
> sweep (gen=0x5d5f508, ee=0x5c4300d0, numBytes=4294967295,
> gcOpts=0x5c3408f8) #1
> CVMgenMarkCompactCollect (gen=0x5d5f508, ee=0x5c4300d0,
> numBytes=4294967295, gcOpts=0x5c3408f8)

Looking at the code, it's perfectly obvious that gdb is reporting the
arguments to sweep incorrectly. The sweep function takes three
arugments: thisGen, base, and top. It is called only from
CVMgenMarkCompactCollect, and that function takes four arguments, gen,
ee, numBytes, and gcOpts.

Clearly the parameters to sweep are being reported incorrectly. I don't
think you really needed me to tell you that. I don't know where the bug
is, but my guess would be that gcc 4.4.1 is not generating correct debug
info for inlined functions.

Ian

>
> ......
>
> If you need more detail pls let me know..
> Thanks.
>
> On Fri, Nov 11, 2011 at 10:01 PM, Ian Lance Taylor <iant@google.com> wrote:
>> naveen yadav <yad.naveen@gmail.com> writes:
>>
>>> I am running one application and it generate core dump. When I run bt .
>>> (gdb) bt
>>> #0  sweep (gn=0x5d5f58, ef=0x5c43000, Bytes=429496729, gcOs=0x5c3408f)
>>> #1  CompactCollect (gn=0x5d5f58, ef=0x5c43000, Bytes=429496729, gcOs=0x5c3408f)
>>> ...
>>>
>>> In above case
>>> we got crash in wepp().
>>> CompactCollect () is main function and wepp() is another function
>>> which got called from CompactCollect ().
>>>
>>> When I check the assembly wepp() become inline.
>>> So i got bit surprise when i check that function parameter;s for both
>>> wepp() and CompactCollect () are same.
>>>
>>> So is it correct behaviour ? that calling and calle have same parameter
>>
>> Without any information about the source code, I don't see how we can
>> tell whether having the same parameters is correct behaviour or not.
>>
>> That said, it is certainly possible that the arguments of the inlined
>> function are not being displayed correctly.  Mainline gcc has gotten
>> quite a bit better about debug info for inlined functions and in general
>> for avoiding incorrect display of variables in optimized code.
>>
>> Ian
>>