List Info

Thread: FW: Segfault in varobj.c




FW: Segfault in varobj.c
user name
2007-07-27 09:29:49
> ----Original Message-----
> From: Daniel Jacobowitz [mailto:drowfalse.org] 
> Sent: 27 July 2007 15:25
> To: Robert Norton
> Subject: Re: Segfault in varobj.c
> 
> On Fri, Jul 27, 2007 at 07:20:50AM -0700, Robert Norton
wrote:
> > Ah. Thanks. There doesn't seem to be any
equivalent 
> function in the 6.6
> > version. Can you remember how this would have been
handled then?
> 
> Badly, I'm afraid.  Vladimir and Nick did a lot of work
cleaning this
> stuff up after 6.6.

OK, thanks.

The below was supposed to go the mailing list but I think my
question is
largely answered. Here it is for the record:

> No, that won't happen any more.  See get_value_type.

Ah. Thanks. There doesn't seem to be any equivalent function
in the 6.6
version. Can you remember how this would have been handled
then?
Appreciate that you're probably not interested in dredging
up the past.
I tried variations on the following code but still wasn't
able to
reproduce in 6.6 so there must be something more to my test
binary:

typedef int * INT_PTR;

struct test_struct {
  INT_PTR x;
};

struct test_struct test;

int main(void) {
  int x = 1;
  test.x = &x;
  return *test.x;
}

rnortonx-cbga-09:rnorton> gdb --interpreter=mi gdbtestfp
...
^done,reason="breakpoint-hit",bkptno="1"
,thread-id="0",frame={addr="0x00
000140",func="main",args=[],file="gdbtes
t.c",line="10"}
(gdb)
-var-create - * test
^done,name="var1",numchild="1",type=&quo
t;struct test_struct"
(gdb)
-var-list-children test
&"Variable object not foundn"
^error,msg="Variable object not found"
(gdb)
-var-list-children var1
^done,numchild="1",children={child={name="var
1.x",exp="x",numchild="1",t
ype="INT_PTR"}}
(gdb)
-var-list-children var1.x
^done,numchild="1",children={child={name="var
1.x.*x",exp="*x",numchild="
0",type="int"}}
(gdb)
-var-list-children var1.x.*x
^done,numchild="0"
(gdb)

Suppose I'll just have to go with a workaround until such
time as we can
upgrade. 

Thanks,

Robert

> -- 
> Daniel Jacobowitz
> CodeSourcery
> 
> 


Re: FW: Segfault in varobj.c
user name
2007-07-27 20:40:49
 > > No, that won't happen any more.  See
get_value_type.
 > 
 > Ah. Thanks. There doesn't seem to be any equivalent
function in the 6.6
 > version. Can you remember how this would have been
handled then?
 > Appreciate that you're probably not interested in
dredging up the past.
 > I tried variations on the following code but still
wasn't able to
 > reproduce in 6.6 so there must be something more to my
test binary:

Your example crashes with GDB 6.6 for me in the way you
first reported.

 > typedef int * INT_PTR;
 > 
 > struct test_struct {
 >   INT_PTR x;
 > };
 > 
 > struct test_struct test;
 > 
 > int main(void) {
 >   int x = 1;
 >   test.x = &x;
 >   return *test.x;
 > }
 > 
 > rnortonx-cbga-09:rnorton> gdb --interpreter=mi
gdbtestfp
 > ...
 >
^done,reason="breakpoint-hit",bkptno="1"
,thread-id="0",frame={addr="0x00
 >
000140",func="main",args=[],file="gdbtes
t.c",line="10"}
 > (gdb)
 > -var-create - * test
 >
^done,name="var1",numchild="1",type=&quo
t;struct test_struct"
 > (gdb)
 > -var-list-children test
 > &"Variable object not foundn"
 > ^error,msg="Variable object not found"
 > (gdb)
 > -var-list-children var1
 >
^done,numchild="1",children={child={name="var
1.x",exp="x",numchild="1",t
 > ype="INT_PTR"}}
 > (gdb)
 > -var-list-children var1.x
 >
^done,numchild="1",children={child={name="var
1.x.*x",exp="*x",numchild="
 > 0",type="int"}}
 > (gdb)
 > -var-list-children var1.x.*x
 > ^done,numchild="0"
 > (gdb)
 > 
 > Suppose I'll just have to go with a workaround until
such time as we can
 > upgrade. 

Yes.  It appears to be fixed in current CVS but isn't
handled by GDB 6.6.

-- 
Nick                                           http://www.inet.net.n
z/~nickrob

[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )