develooper Front page | perl.perl5.porters | Postings from September 2018

Re: [perl #133347] BBC SREZIC/Tk-804.034.tar.gz

Thread Previous
From:
Petr Pisar
Date:
September 12, 2018 16:03
Subject:
Re: [perl #133347] BBC SREZIC/Tk-804.034.tar.gz
Message ID:
slrnppie6f.7tu.ppisar@dhcp-0-146.brq.redhat.com
On 2018-09-11, Karl Williamson <public@khwilliamson.com> wrote:
> On 09/10/2018 06:00 AM, Petr Pisar wrote:
>> On 2018-07-08, Karl Williamson <public@khwilliamson.com> wrote:
>>> I edited encGlue.c to get rid of all these and all the warnings, but the
>>> make test crashes before it gets to where the failures in this ticket occur.
>>>
>> I came across this issue when I applied:
>> 
>> commit aa3c16bd709ef9b9c8c785af48f368e08f70c74b
>> Author: Karl Williamson <khw@cpan.org>
>> Date:   Tue Jul 17 13:57:54 2018 -0600
>> 
>>      Make utf8_to_uvchr() safer
>> 
>>      This function is deprecated because the API doesn't allow it to
>>      determine the end of the input string, so it can read off the far end.
>>      But I just realized that since many strings are NUL-terminated, so we
>>      can forbid it from reading past the next NUL, and hence make it safe in
>>      many cases.
>> 
>> to perl-5.28.0. Then unpatched Tk crashed for me in Tcl_NumUtfChars() at
>> encGlue.c:117:
>> 
>> int
>> Tcl_NumUtfChars(CONST char * src, int len)
>> {
>>   U8 *s = (U8 *) src;
>>   U8 *send;
>>   if (len < 0)
>>    len = strlen(src);
>>   send = s + len;
>>   len = 0;
>>   while (s < send)
>>    {
>> →  s += UTF8SKIP(s);
>>     len++;
>>    }
>>   return len;
>> }
>> 
>> when debugigng Tk-Pod-0.9943 test failure like this:
>> 
>> $ DISPLAY=:99 perl -Iblib/lib -e 'use Tk::MainWindow; $m=Tk::MainWindow->new; require Tk::Pod::Search; $m->PodSearch'
>> 
>> The backtrace was:
>> 
>> #0  Tcl_NumUtfChars (src=src@entry=0x55a6feecede0 "Search:", len=25087, len@entry=1853537494) at encGlue.c:117
>> #1  0x00007f076e750fc4 in NewChunk (layoutPtrPtr=layoutPtrPtr@entry=0x7ffdcbaaed38, maxPtr=maxPtr@entry=0x7ffdcbaaed2c, start=start@entry=0x55a6feecede0 "Search:",
>>      numBytes=numBytes@entry=1853537494, curX=0, newX=9, y=27) at tkFont.c:3298
>> #2  0x00007f076e751c93 in Tk_ComputeTextLayout (tkfont=0x55a6fee8afe0, string=0x55a6feecede0 "Search:", numChars=<optimized out>, numChars@entry=-1, wrapLength=-1,
>>      wrapLength@entry=0, justify=justify@entry=TK_JUSTIFY_CENTER, flags=1, flags@entry=0, widthPtr=0x55a6feebe0c8, heightPtr=0x55a6feebe0cc) at tkFont.c:1977
>> #3  0x00007f076e78019e in TkpComputeButtonGeometry (butPtr=butPtr@entry=0x55a6feebdf50) at tkUnixButton.c:602
>> #4  0x00007f076e749351 in TkButtonWorldChanged (instanceData=instanceData@entry=0x55a6feebdf50) at tkButton.c:1392
>> #5  0x00007f076e749928 in ConfigureButton (interp=interp@entry=0x55a6fec3aea0, butPtr=butPtr@entry=0x55a6feebdf50, objc=objc@entry=2, objv=objv@entry=0x55a6fe685a98)
>>      at tkButton.c:1279
>> #6  0x00007f076e74a572 in ButtonWidgetObjCmd (clientData=clientData@entry=0x55a6feebdf50, interp=interp@entry=0x55a6fec3aea0, objc=objc@entry=4, objv=objv@entry=0x55a6fe685a88)
>>      at tkButton.c:823
>> #7  0x00007f076e729560 in Call_Tk () at tkGlue.c:2260
>> #8  0x00007f076e729b4d in XStoWidget (my_perl=0x55a6fe680260, cv=0x55a6fea63e58) at tkGlue.c:2627
>> #9  0x00007f076ef91299 in Perl_pp_entersub (my_perl=0x55a6fe680260) at pp_hot.c:5232
>> #10 0x00007f076ef87485 in Perl_runops_standard (my_perl=0x55a6fe680260) at run.c:42
>> #11 0x00007f076ef03fdd in S_run_body (oldscope=<optimized out>, my_perl=<optimized out>) at perl.c:2689
>> #12 perl_run (my_perl=0x55a6fe680260) at perl.c:2617
>> #13 0x000055a6fd8ab26a in main (argc=<optimized out>, argv=<optimized out>, env=<optimized out>) at perlmain.c:122
>> 
>> The "Search:" string 25087 length seems dubious.
>> 
>> Maybe it's the same reason why your attempt to port Tk to the new API
>> ends with a crash.
>> 
>> -- Petr
>> 
>
> Could you run this under valgrind?  I suspect this would show up a bug 
> in the library.

valgrind reports plenty of jumps depending on an unitilaized memory in
Tk-Pod XS code on patched and unpatatched perl. The crash happens on
patched perl randomly. I compared valgrind output between patched and
unpatched perl and found this new error important:

==PID== Use of uninitialised value of size 8
==PID==    at ADDRESS: Tcl_NumUtfChars (encGlue.c:117)
==PID==    by ADDRESS: NewChunk (tkFont.c:3298)
==PID==    by ADDRESS: Tk_ComputeTextLayout (tkFont.c:1977)
==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)

The encGlue.c:117 is at:

int
Tcl_NumUtfChars(CONST char * src, int len)
{
 U8 *s = (U8 *) src;
 U8 *send;
 if (len < 0)
  len = strlen(src);
 send = s + len;
 len = 0;
 while (s < send)
  {
→  s += UTF8SKIP(s);
   len++;
  }
 return len;
}

It's the same place found by a debugger. I don't think valgrind provides any
other usefull clues. Here is the complete difference if you are interested:

--- /tmp/good	2018-09-12 17:47:15.412000000 +0200
+++ /tmp/bad	2018-09-12 17:47:10.412000000 +0200
@@ -14,7 +14,8 @@
 ==PID==    by ADDRESS: main (perlmain.c:122)
 ==PID== 
 ==PID== Conditional jump or move depends on uninitialised value(s)
-==PID==    at ADDRESS: CreateFrame.isra.3 (tkFrame.c:538)
+==PID==    at ADDRESS: LangCmpOpt (tkGlue.c:3641)
+==PID==    by ADDRESS: CreateFrame.isra.3 (tkFrame.c:531)
 ==PID==    by ADDRESS: XS_Tk__MainWindow_Create (tkGlue.c:2378)
 ==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
 ==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
@@ -22,7 +23,7 @@
 ==PID==    by ADDRESS: main (perlmain.c:122)
 ==PID== 
 ==PID== Conditional jump or move depends on uninitialised value(s)
-==PID==    at ADDRESS: LangCmpOpt (tkGlue.c:3641)
+==PID==    at ADDRESS: LangCmpOpt (tkGlue.c:3648)
 ==PID==    by ADDRESS: CreateFrame.isra.3 (tkFrame.c:531)
 ==PID==    by ADDRESS: XS_Tk__MainWindow_Create (tkGlue.c:2378)
 ==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
@@ -31,7 +32,7 @@
 ==PID==    by ADDRESS: main (perlmain.c:122)
 ==PID== 
 ==PID== Conditional jump or move depends on uninitialised value(s)
-==PID==    at ADDRESS: LangCmpOpt (tkGlue.c:3648)
+==PID==    at ADDRESS: LangCmpOpt (tkGlue.c:3651)
 ==PID==    by ADDRESS: CreateFrame.isra.3 (tkFrame.c:531)
 ==PID==    by ADDRESS: XS_Tk__MainWindow_Create (tkGlue.c:2378)
 ==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
@@ -40,8 +41,7 @@
 ==PID==    by ADDRESS: main (perlmain.c:122)
 ==PID== 
 ==PID== Conditional jump or move depends on uninitialised value(s)
-==PID==    at ADDRESS: LangCmpOpt (tkGlue.c:3651)
-==PID==    by ADDRESS: CreateFrame.isra.3 (tkFrame.c:531)
+==PID==    at ADDRESS: CreateFrame.isra.3 (tkFrame.c:532)
 ==PID==    by ADDRESS: XS_Tk__MainWindow_Create (tkGlue.c:2378)
 ==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
 ==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
@@ -49,7 +49,7 @@
 ==PID==    by ADDRESS: main (perlmain.c:122)
 ==PID== 
 ==PID== Conditional jump or move depends on uninitialised value(s)
-==PID==    at ADDRESS: CreateFrame.isra.3 (tkFrame.c:532)
+==PID==    at ADDRESS: CreateFrame.isra.3 (tkFrame.c:538)
 ==PID==    by ADDRESS: XS_Tk__MainWindow_Create (tkGlue.c:2378)
 ==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
 ==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
@@ -118,16 +118,277 @@
 ==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
 ==PID==    by ADDRESS: main (perlmain.c:122)
 ==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:560)
+==PID==    by ADDRESS: Tk_AllocFontFromObj (tkFont.c:1158)
+==PID==    by ADDRESS: DoObjConfig (tkConfig.c:799)
+==PID==    by ADDRESS: Tk_InitOptions (tkConfig.c:569)
+==PID==    by ADDRESS: Tk_ListboxObjCmd (tkListbox.c:571)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XSTkCommand (tkGlue.c:3025)
+==PID==    by ADDRESS: XS_Tk_listbox (Listbox.xs:30)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:560)
+==PID==    by ADDRESS: Tk_TextWidth (tkFont.c:1774)
+==PID==    by ADDRESS: ListboxComputeGeometry (tkListbox.c:2176)
+==PID==    by ADDRESS: ListboxWorldChanged (tkListbox.c:1798)
+==PID==    by ADDRESS: ConfigureListbox.isra.2 (tkListbox.c:1672)
+==PID==    by ADDRESS: Tk_ListboxObjCmd (tkListbox.c:577)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XSTkCommand (tkGlue.c:3025)
+==PID==    by ADDRESS: XS_Tk_listbox (Listbox.xs:30)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:554)
+==PID==    by ADDRESS: Tk_TextWidth (tkFont.c:1774)
+==PID==    by ADDRESS: ListboxComputeGeometry (tkListbox.c:2176)
+==PID==    by ADDRESS: ListboxWorldChanged (tkListbox.c:1798)
+==PID==    by ADDRESS: ConfigureListbox.isra.2 (tkListbox.c:1672)
+==PID==    by ADDRESS: Tk_ListboxObjCmd (tkListbox.c:577)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XSTkCommand (tkGlue.c:3025)
+==PID==    by ADDRESS: XS_Tk_listbox (Listbox.xs:30)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:560)
+==PID==    by ADDRESS: Tk_TextWidth (tkFont.c:1774)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:608)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonCreate.isra.5 (tkButton.c:744)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XSTkCommand (tkGlue.c:3025)
+==PID==    by ADDRESS: XStoTclCmdNull (tkGlue.c:3039)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:560)
+==PID==    by ADDRESS: Tk_AllocFontFromObj (tkFont.c:1158)
+==PID==    by ADDRESS: DoObjConfig (tkConfig.c:799)
+==PID==    by ADDRESS: Tk_SetOptions (tkConfig.c:1445)
+==PID==    by ADDRESS: ConfigureListbox.isra.2 (tkListbox.c:1570)
+==PID==    by ADDRESS: ListboxWidgetObjCmd (tkListbox.c:709)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:560)
+==PID==    by ADDRESS: Tk_TextWidth (tkFont.c:1774)
+==PID==    by ADDRESS: EntryWorldChanged (tkEntry.c:1707)
+==PID==    by ADDRESS: ConfigureEntry.isra.5 (tkEntry.c:1668)
+==PID==    by ADDRESS: Tk_EntryObjCmd (tkEntry.c:853)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XSTkCommand (tkGlue.c:3025)
+==PID==    by ADDRESS: XS_Tk_entry (Entry.xs:27)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:554)
+==PID==    by ADDRESS: Tk_TextWidth (tkFont.c:1774)
+==PID==    by ADDRESS: EntryWorldChanged (tkEntry.c:1707)
+==PID==    by ADDRESS: ConfigureEntry.isra.5 (tkEntry.c:1668)
+==PID==    by ADDRESS: Tk_EntryObjCmd (tkEntry.c:853)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XSTkCommand (tkGlue.c:3025)
+==PID==    by ADDRESS: XS_Tk_entry (Entry.xs:27)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:560)
+==PID==    by ADDRESS: Tk_ComputeTextLayout (tkFont.c:1972)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:554)
+==PID==    by ADDRESS: Tk_ComputeTextLayout (tkFont.c:1972)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_ComputeTextLayout (tkFont.c:1976)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tcl_NumUtfChars (encGlue.c:111)
+==PID==    by ADDRESS: NewChunk (tkFont.c:3298)
+==PID==    by ADDRESS: Tk_ComputeTextLayout (tkFont.c:1977)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tcl_NumUtfChars (encGlue.c:115)
+==PID==    by ADDRESS: NewChunk (tkFont.c:3298)
+==PID==    by ADDRESS: Tk_ComputeTextLayout (tkFont.c:1977)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tcl_NumUtfChars (encGlue.c:115)
+==PID==    by ADDRESS: NewChunk (tkFont.c:3298)
+==PID==    by ADDRESS: Tk_ComputeTextLayout (tkFont.c:1977)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID== 
+==PID== Use of uninitialised value of size 8
+==PID==    at ADDRESS: Tcl_NumUtfChars (encGlue.c:117)
+==PID==    by ADDRESS: NewChunk (tkFont.c:3298)
+==PID==    by ADDRESS: Tk_ComputeTextLayout (tkFont.c:1977)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_ComputeTextLayout (tkFont.c:1985)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_ComputeTextLayout (tkFont.c:2024)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_ComputeTextLayout (tkFont.c:2048)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_ComputeTextLayout (tkFont.c:1940)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:602)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
+==PID== Conditional jump or move depends on uninitialised value(s)
+==PID==    at ADDRESS: Tk_MeasureChars (tkUnixXft.c:554)
+==PID==    by ADDRESS: Tk_TextWidth (tkFont.c:1774)
+==PID==    by ADDRESS: TkpComputeButtonGeometry (tkUnixButton.c:608)
+==PID==    by ADDRESS: TkButtonWorldChanged (tkButton.c:1392)
+==PID==    by ADDRESS: ConfigureButton (tkButton.c:1279)
+==PID==    by ADDRESS: ButtonWidgetObjCmd (tkButton.c:823)
+==PID==    by ADDRESS: Call_Tk (tkGlue.c:2260)
+==PID==    by ADDRESS: XStoWidget (tkGlue.c:2627)
+==PID==    by ADDRESS: Perl_pp_entersub (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: Perl_runops_standard (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: perl_run (in /usr/lib64/libperl.so.5.28.0)
+==PID==    by ADDRESS: main (perlmain.c:122)
+==PID== 
 ==PID== 
 ==PID== HEAP SUMMARY:
-==PID==     in use at exit: 7,460,071 bytes in 33,139 blocks
-==PID==   total heap usage: 99,626 allocs, 66,487 frees, 17,400,121 bytes allocated
+==PID==     in use at exit: 7,460,004 bytes in 33,142 blocks
+==PID==   total heap usage: 99,583 allocs, 66,441 frees, 17,389,542 bytes allocated
 ==PID== 
 ==PID== LEAK SUMMARY:
 ==PID==    definitely lost: 23,450 bytes in 41 blocks
 ==PID==    indirectly lost: 69,152 bytes in 33 blocks
-==PID==      possibly lost: 7,166,005 bytes in 28,373 blocks
-==PID==    still reachable: 201,464 bytes in 4,692 blocks
+==PID==      possibly lost: 7,165,906 bytes in 28,376 blocks
+==PID==    still reachable: 201,496 bytes in 4,692 blocks
 ==PID==                       of which reachable via heuristic:
 ==PID==                         newarray           : 24,968 bytes in 764 blocks
 ==PID==         suppressed: 0 bytes in 0 blocks
@@ -135,4 +396,4 @@
 ==PID== 
 ==PID== For counts of detected and suppressed errors, rerun with: -v
 ==PID== Use --track-origins=yes to see where uninitialised values come from
-==PID== ERROR SUMMARY: 175 errors from 12 contexts (suppressed: 0 from 0)
+==PID== ERROR SUMMARY: 255 errors from 31 contexts (suppressed: 0 from 0)

-- Petr

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About