Re: assertion error in pretty printing

Simon Marchi via Gdb <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 2021-07-07 2:34 p.m., Jonah Graham wrote:
> Hi folks.
> 
> I have an internal error in GDB that AFAICT is down to the python pretty
> printers. This is being hit by CDT (reported in
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=574645)
> 
> Doing a -var-update I get this internal error:
> 
> ~"/scratch/gdb/binutils-gdb/gdb/c-varobj.c:516: internal-error: std::string
> c_value_of_variable(const varobj*, varobj_display_formats): Assertion
> `!value_lazy (var->value.get ())' failed.\nA problem internal to GDB has
> been detected,\nfurther debugging may prove unreliable.\nQuit this
> debugging session? (y or n) "
> 
> Steps to reproduce:
> 
> Get source from
> https://bugzillaattachments.eclipsecontent.org/bugs/attachment.cgi?id=286726
> curl
> https://bugzillaattachments.eclipsecontent.org/bugs/attachment.cgi?id=286726
>> bug574645.cpp
> g++ -std=c++2a -O0 -g3 bug574645.cpp -o bug574645
> gdb --interpreter=mi2
> 
> then use these commands:
> 6-enable-pretty-printing
> 8-gdb-set print object on
> 19-file-exec-and-symbols --thread-group i1 bug574645
> 26-break-insert -f bug574645.cpp:31
> 27-break-insert -t -f main
> 29-exec-run --thread-group i1
> 41-var-create --thread 1 --frame 0 - * data2
> 44-var-list-children var1 0 1
> 48-exec-continue --thread 1
> 51-var-update 1 var1
> 
> If running with a locally built GDB the python pretty printers need to be
> pointed at (e.g. add  --data-directory=/usr/share/gdb to gdb command line)
> 
> Where do I start debugging this? I have reproduced with latest HEAD of
> gdb + the data directory on my Ubuntu 20.04 machine.

Hi Jonah,

First, maybe file a bug with that information.

Then, I'm not sure what to say.  You need to understand why this assert
is there, why it is failing in this case, what lead up to this.  Classic
debugging / investigative work.

I can't provide you with pointers in the code without looking at the
problem myself (which I don't really have time to do), other than "check
the backtrace at the point of the crash".  Do you need guidance / tips
on how to debug GDB with GDB?

Thanks,

Simon
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.