Re: gdb 8.0 "lazy_string" exception "Length is larger than array size"

Phil Muldoon <[email protected]>
Newsgroups gmane.comp.gdb.devel,gmane.comp.gdb.general
Message-ID <[email protected]>
On 25/09/17 18:20, Michael Stahl wrote:
> 
> hi,
> 
> for the following string type:
> 
>   /** The implementation of a Unicode string.
>   */
>   typedef struct SAL_DLLPUBLIC_RTTI _rtl_uString
>   {
>       oslInterlockedCount refCount; /* opaque */
>       sal_Int32           length;
>       sal_Unicode         buffer[1];
>   } rtl_uString;
> 
> the gdb python pretty-printer calls:
> 
> 	return data.lazy_string(encoding, length)
> 
> full python pretty-printer module:
> 
> https://gerrit.libreoffice.org/gitweb?p=core.git;a=blob;f=solenv/gdb/libreoffice/util/string.py;h=32583718f83b2ad5707f75dd6327d9aa62764439;hb=5f210715fe090b4db4c80dcdee5f77dc404cf85c#l56
> 
> now this results in this exception:
> 
>   Traceback (most recent call last):
>     File "/work/lo/master/solenv/gdb/libreoffice/util/string.py", line
> 29, in to_string
>       return self.make_string(data, self.encoding, len)
>     File "/work/lo/master/solenv/gdb/libreoffice/util/string.py", line
> 66, in make_string
>       return data.lazy_string(encoding, length)
>   gdb.error: Length is larger than array size.
> 
> this is with Fedora 26 "GNU gdb (GDB) Fedora 8.0.1-26.fc26" - in Fedora
> 25 this did not throw an exception.
> 
> apparently the problem is that the array is statically declared as
> "buffer[1]", however its actual dynamic size is the same as "length".
> 
> is this a bug in gdb or is lazy_string not intended to support this
> scenario?
> 
> regards,
>  michael
> 

Yeah, it's determining the string is an array and finding that the
declared length is larger then the array size. This is (as you noted)
the initial length of the array is [1] and that array is then
modified later. This code was added at 34b433203b5 by Doug Evans and
it was noted it was a bug. I've not sure, though, fixing this bug
may have had unintended consequences. I've CC'd Doug on the patch
and maybe he could comment further.

Cheers

Phil
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.