MI pretty printing -var-list-children segfaults

Simon Marchi simon.marchi@ericsson.com
Mon Nov 30 22:32:00 GMT 2015


On 15-11-30 04:18 PM, Xavier de Gaye wrote:
> gdb 7.10 segfaults after deleting the varobj child of a vector with one
> element.  Does that mean children must no be deleted ?
> 
> The last part of the debugging session:
> 
> (gdb)
> ~"8\t    v.push_back(3);\n"
> *stopped,reason="end-stepping-range",frame={addr="0x0000000000400b35",func="main",args=[],file="pret
> ty-printing.cc",fullname="/home/xavier/src/pyclewn/pyclewn-hg-working/testsuite/pretty-printing.cc",
> line="8"},thread-id="1",stopped-threads="all",core="1"
> (gdb)
> -enable-pretty-printing
> ^done
> (gdb)
> -var-create var1 * "v"
> ^done,name="var1",numchild="0",value="{...}",type="std::vector<int, std::allocator<int> >",thread-id
> ="1",displayhint="array",dynamic="1",has_more="1"
> (gdb)
> -var-list-children var1
> ^done,numchild="1",displayhint="array",children=[child={name="var1.[0]",exp="[0]",numchild="0",type=
> "int",thread-id="1"}],has_more="0"
> (gdb)
> -var-delete var1.[0]
> ^done,ndeleted="1"
> (gdb)
> -var-list-children var1
> Segmentation fault (core dumped)
> 
> 
> And the source code:
> 
> #include <vector>
> #include <string>
> 
> int main()
> {
>      std::vector<int> v;
>      v.push_back(2);
>      v.push_back(3);
>      return 0;
> }
> 
> 
> Xavier

Hi Xavier,

One thing is sure, gdb should not segfault when you do something that
you are not supposed to do.  If you shouldn't delete varobj children,
then gdb should return an error.  So that's a bug in gdb for sure.

If you could file a bug with as much details as possible on how to
reproduce it, it would be greatly appreciated:

https://sourceware.org/bugzilla/enter_bug.cgi?product=gdb

I don't have the required background to answer your actual question, so
I'll let others do it.

Thanks!

Simon



More information about the Gdb mailing list