A fix for bug 13259 - gdb sometimes crashes with SIGSEGV when printing variables

Martin Runge
2011-10-05T14:07:18Z

Hello together,
here is a possible fix for a gdb crash I just filed as bug 13259:

--- a/gdb/varobj.c      Wed Sep 28 12:36:27 2011 +0200
+++ b/gdb/varobj.c      Wed Oct 05 15:53:04 2011 +0200
@@ -2640,7 +2640,7 @@
opts.raw = 1;
if (thevalue)
LA_PRINT_STRING (stb, type, thevalue, len, encoding, 0, &opts);
-  else if (string_print)
+  else if (string_print && type != NULL)
val_print_string (type, encoding, str_addr, len, stb, &opts);
else
common_val_print (value, stb, 0, &opts, current_language);

I observed the "type" parameter beeing NULL _and_ "string_print" !=0
several times, which leads to a SIGSEGV inside val_print_string.

Maybe the cause is a few lines earlier in the same function
(value_get_print_value), where string_print is set to 1 without having
resolved "type".

best regards
Martin