Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Wrong frame level info from CDT.

Bala,

The problem has been fixed for 3.0.1 (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=109785). When you step out of a function, the platform schedules a job to refresh the Variables view for the old stack frame. The stack frame has gone on the target by the time when the job starts running. This doesn't happen every time because of the timing issues. Unfortunately, we don't have control on this type of jobs (hopefully, it will be possible in Eclipse 3.2), so we can't prevent it from running. But we added a flag to the CStackFrame class to indicate that it has been disposed.

Mikhail
----- Original Message ----- From: "Krithivasan, Balasubramaniyan (STSD)" <balasubramaniyan.krithivasan@xxxxxx>
To: <cdt-dev@xxxxxxxxxxx>
Sent: Tuesday, December 06, 2005 11:47 PM
Subject: RE: [cdt-dev] Wrong frame level info from CDT.


Mikhail,

(1) I purposely removed those commands because it was just "info
signals & var-create commands" between 18121 & 18126.    Do you need
them ?

(2) We are using CDT 3.0 for sure & we are not using CDT 3.0.1.
- Bala


-----Original Message-----
From: Mikhail Khodjaiants [mailto:mikhailk@xxxxxxx]
Sent: Wednesday, December 07, 2005 4:58 AM
To: Krithivasan, Balasubramaniyan (STSD); CDT General developers list.
Subject: Re: [cdt-dev] Wrong frame level info from CDT.

Bala,

Anita mentioned that the CDT version you are using is 3.0. We made some
fixes for 3.0.1 that may affect this problem. Can you confirm that you
are not using 3.0.1?

Thanks,
Mikhail
----- Original Message -----
From: "Balasubramaniyan" <balask@xxxxxxxxxxxx>
To: "'CDT General developers list.'" <cdt-dev@xxxxxxxxxxx>
Sent: Tuesday, December 06, 2005 9:33 AM
Subject: RE: [cdt-dev] Wrong frame level info from CDT.


Mikhail,

I could not get to the rock bottom of the problem as this problem is
not reproducible all the times.
But we have been getting No frame with frame # or frame address from
time to time.
Some times, the frame # is -1 & sometimes, the frame # is 3 or 4
(where just frames does not exist at all)

There could be something the following code is messing up
with[Thread.java:
278]
// Need the GDB/MI view of level which is the reverse, i.e. the
highest level is 0 // See comment in StackFrame constructor.
int miLevel = getStackFrameCount() - frameLevel;

I have just listed the MI annotatations for one such scenario.


[1,133,878,523,970] 18118-exec-step 1
[1,133,878,523,970] 18118^running
[1,133,878,523,970] (gdb)
[1,133,878,524,110]
18118*stopped,reason="end-stepping-range",thread-id="1",frame={addr="0
x0
0000
0000\
4205be2",func="vim_strsave",args=[{name="string"}],file="/home/balask/
th
read
s/Vim/vim62/src/misc2.c"\
,line="915"}
[1,133,878,524,110] (gdb)
[1,133,878,524,110] 18119 info threads [1,133,878,524,126] &"info
threads\n"
[1,133,878,524,313] ~"*   1 system thread 1729469 Priority:178  "
[1,133,878,524,313]
18119^done,frame={func="vim_strsave",args=[{name="string"}],file="/hom
e/
bala
sk/t\
hreads/Vim/vim62/src/misc2.c",line="915"}
[1,133,878,524,313] (gdb)
[1,133,878,524,313] 18120-stack-info-depth [1,133,878,524,329]
18120^done,depth="3"
[1,133,878,524,329] (gdb)
[1,133,878,524,329] 18121-stack-list-frames 0 3 [1,133,878,524,345]
18121^done,stack=[frame={level="0
",addr="0x0000000004205be2",func="vim_strsave"\
,file="/home/balask/threads/Vim/vim62/src/misc2.c",line="915"},frame={
le
vel=
"1 ",addr="0x00000000043\
bad70",func="netbeans_setRunDir",file="/home/balask/threads/Vim/vim62/
sr
c/ne
tbeans.c",line="2057"},f\
rame={level="2
",addr="0x00000000041a1310",func="main",file="/home/balask/threads/Vim
/v
im62
/src/main\
.c",line="323"}]
[1,133,878,525,251] (gdb)
getStackFrameCount()=3::::::frameLevel= 3::::::getStackFrameCount
-frameLevel= 0 [1,133,878,531,611] 18126-stack-select-frame 0
[1,133,878,531,829] 18126^done [1,133,878,531,829] 18127 whatis p
[1,133,878,531,829] (gdb) [1,133,878,531,845] &"whatis p\n"
[1,133,878,532,032] ~"type = unsigned char *\n"
[1,133,878,532,032] 18127^done
[1,133,878,532,032] (gdb)
getStackFrameCount()= 3::::::frameLevel= 0::::::getStackFrameCount -
frameLevel= 3 [1,133,878,536,298] 18128-stack-select-frame 3
[1,133,878,536,298] &"No frame with frame# or frame_address 3\n"
[1,133,878,536,486] 18128^error,msg="No frame with frame# or
frame_address 3"
[1,133,878,536,486] (gdb)
[1,133,878,536,486] 18129 whatis p
[1,133,878,536,486] &"whatis p\n"
[1,133,878,536,689] ~"type = unsigned char *\n"
[1,133,878,536,689] 18129^done




Thanks,
Bala

-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]
On
Behalf Of Mikhail Khodjaiants
Sent: Friday, December 02, 2005 9:50 PM
To: CDT General developers list.
Subject: Re: [cdt-dev] Wrong frame level info from CDT.

Anita,

Therefore pressing F5 at the return statement of this function gives
following input to MI GDB: [ (FrameCount - FrameLevel) = (2-3) = -1 ]

               mi stack-select-frame -1 output returned will be 'No
frame with frame# or frame_address -1" from GDB.

The "stack-select-frame" command is not get called in your scenario.
When I
follow it I don't get this error.
"stack-select-frame" is called only if the selection of stack frame in

the Debug view is changed.

Mikhail

----- Original Message -----
From: "Birje, Anita (STSD)" <anita.birje@xxxxxx>
To: "CDT General developers list." <cdt-dev@xxxxxxxxxxx>
Sent: Friday, December 02, 2005 7:17 AM
Subject: RE: [cdt-dev] Wrong frame level info from CDT.


Hi Mikhail,

I am working on the latest version of CDT (3.0),  OS being Windows
XP.

Simple scenario
------------------------
Assume the stack frame level is currently 2 & frame count is 2.
(Frame level is the current stack frame and frame count is the total
number
of
stack frames)

After a function call (Step Into / F5), suppose the frame level
becomes
3 & total number of stack frames is 3.(Frames here are 3 nested
function
calls, each function defined in separate '*.c' file). On return from
this particular function the frame count gets reduced by 1
(FrameCount is now 2) whereas the levels of frame (FrameLevel in
StackFrame) still displays 3.

Therefore pressing F5 at the return statement of this function gives
following input to MI GDB: [ (FrameCount - FrameLevel) = (2-3) = -1 ]

               mi stack-select-frame -1 output returned will be 'No
frame with frame# or frame_address -1"
from
GDB.

Thanks,
Anita

-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx [
<mailto:cdt-dev-bounces@xxxxxxxxxxx>
mailto:cdt-dev-bounces@xxxxxxxxxxx]
On Behalf Of Mikhail Khodjaiants
Sent: Tuesday, November 29, 2005 9:56 PM
To: CDT General developers list.
Subject: Re: [cdt-dev] Wrong frame level info from CDT.

Anita,

You must be doing something else except stepping - the
"stack-select-frame"
command is not get called if I just step through the code.
I tried to follow your instructions but I haven't been able to
reproduce
the problem.
BTW, which version of CDT you rae using and what is your platfom?

Thanks,
Mikhail
----- Original Message -----
From: "Birje, Anita (STSD)" <anita.birje@xxxxxx>
To: "CDT General developers list." <cdt-dev@xxxxxxxxxxx>
Sent: Tuesday, November 29, 2005 8:18 AM
Subject: RE: [cdt-dev] Wrong frame level info from CDT.


Hi,

This happens in a nested function call ( when frame level >= 3 ),
whenever there is a return from the function (frame level > 3).
Instead
of doing a Step Over (F6), do a Step Into (F5) and the error could
be reproduced.

As mentioned in the previous mail, sometimes the frameLevel or the
frameCount issues a wrong mi frame level command, resulting in 'No
frame
with frame# or frame_address -1" from GDB.

Hope the information would be enough to reproduce this error. Please
let
me know if any further indepth information would be required for
reproducing this.

Thanks & Regards,
Anita Birje



-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx [
<mailto:cdt-dev-bounces@xxxxxxxxxxx>
mailto:cdt-dev-bounces@xxxxxxxxxxx]

On Behalf Of Mikhail Khodjaiants
Sent: Tuesday, November 29, 2005 3:24 AM
To: CDT General developers list.
Subject: Re: [cdt-dev] Wrong frame level info from CDT.

Do you have a test case? I can't reproduce it.

----- Original Message -----
From: "Birje, Anita (STSD)" <anita.birje@xxxxxx>
To: "CDT General developers list." <cdt-dev@xxxxxxxxxxx>
Sent: Friday, November 25, 2005 7:56 AM
Subject: [cdt-dev] Wrong frame level info from CDT.


Hi,

While trying to debug a program, I get wrong frame level info from
CDT,
therefore passing a command to MI GDB as follows mi
stack-select-frame -1 results in a 'No frame with frame# or
frame_address -1" from GDB.

After going through the code, realized , 'Thread.java' returns '-1'
at
line 277 :
int miLevel = getStackFrameCount()- frameLevel;

The 'frameLevel' estimated is incorrect which is done in
'Thread.java'
at line 256:
frameLevel = stackframe.getLevel(); This is probably due to the
wrong level set at line 124 in
'Thread.java'
:
currentFrames.add(new StackFrame(this, miFrames[i], depth -
miFrames[i].getLevel()));

Did anyone encounter this problem or knows the solution, please
help.


Regards,
Anita




_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev



_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev

_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev



Back to the top