From j|ox @end|ng |rom mcm@@ter@c@  Sun Jun  7 18:08:48 2020
From: j|ox @end|ng |rom mcm@@ter@c@ (Fox, John)
Date: Sun, 7 Jun 2020 16:08:48 +0000
Subject: [Rd] 
 [External] Re: use of the tcltk package crashes R 4.0.1 for Windows
In-Reply-To: <alpine.DEB.2.21.2006071040370.3474@luke-Latitude-7480>
References: <ACD1644AA6C67E4FBD0C350625508EC88CF55DA3@FHSDB2D11-2.csu.mcmaster.ca>
 <CABFfbXuT+hs2uAQuGtvJ_-c1xQPwx6Z+kfiUUwHJkvd4jzY6dg@mail.gmail.com>
 <B39BE746-8080-416C-A5C9-A1E6F06BA7BC@gmail.com>
 <alpine.DEB.2.21.2006071040370.3474@luke-Latitude-7480>
Message-ID: <ACD1644AA6C67E4FBD0C350625508EC88CF58511@FHSDB2D11-2.csu.mcmaster.ca>

Hi,

Does it make sense to withdraw the Windows R 4.0.1 binary until the issue is resolved? 

Best,
 John

> -----Original Message-----
> From: luke-tierney at uiowa.edu <luke-tierney at uiowa.edu>
> Sent: Sunday, June 7, 2020 11:54 AM
> To: peter dalgaard <pdalgd at gmail.com>
> Cc: Jeroen Ooms <jeroenooms at gmail.com>; Fox, John <jfox at mcmaster.ca>; r-
> devel at r-project.org
> Subject: Re: [External] Re: [Rd] use of the tcltk package crashes R 4.0.1
> for Windows
> 
> On Sun, 7 Jun 2020, peter dalgaard wrote:
> 
> > So this wasn't tested for a month?
> >
> > Anyways, Free() is just free() with a check that we're not freeing a
> > null pointer, followed by setting the pointer to NULL. At that point
> > of tcltk.c, we have
> >
> >   for (objc = i = 0; i < length(avec); i++){
> >        const char *s;
> >        char *tmp;
> >        if (!isNull(nm) && strlen(s = translateChar(STRING_ELT(nm, i)))){
> >            //  tmp = calloc(strlen(s)+2, sizeof(char));
> >            tmp = Calloc(strlen(s)+2, char);
> >            *tmp = '-';
> >            strcpy(tmp+1, s);
> >            objv[objc++] = Tcl_NewStringObj(tmp, -1);
> >            free(tmp);
> >        }
> >        if (!isNull(t = VECTOR_ELT(avec, i)))
> >            objv[objc++] = (Tcl_Obj *) R_ExternalPtrAddr(t);
> >    }
> >
> > and I can't see how tmp can be NULL at the free(), nor can I see it
> mattering if it is not set to NULL (notice that it goes out of scope with
> the for loop).
> 
> Right. And the calloc->Calloc change doesn't look like an issue either
> -- just checking for a NULL.
> 
> If the crash is happening in free() then that most likely means corrupted
> malloc data structures. Unfortunately that could be happening anywhere.
> 
> Best bet to narrow this down is for someone with a good Windows setup who
> can reproduce this to bisect the svn commits and see at what commit this
> started happening. Unfortunately my office Windows machine isn't
> responding and it will probably take some time to get that fixed.
> 
> Best,
> 
> luke
> 
> >
> > -pd
> >
> >
> >> On 7 Jun 2020, at 16:00 , Jeroen Ooms <jeroenooms at gmail.com> wrote:
> >>
> >> On Sun, Jun 7, 2020 at 3:13 AM Fox, John <jfox at mcmaster.ca> wrote:
> >>>
> >>> Hi,
> >>>
> >>> The following code, from the examples in ?TkWidgets , immediately
> crashes R 4.0.1 for Windows:
> >>>
> >>> --------------------- snip --------------------
> >>> library("tcltk")
> >>> tt <- tktoplevel()
> >>> label.widget <- tklabel(tt, text = "Hello, World!") button.widget <-
> >>> tkbutton(tt, text = "Push",
> >>>         command = function()cat("OW!\n")) tkpack(label.widget,
> >>> button.widget) # geometry manager
> >>> --------------------- snip --------------------
> >>
> >>
> >> I can reproduce this. The backtrace shows the crash happens in
> >> dotTclObjv  [/src/library/tcltk/src/tcltk.c at 243 ]. This looks like a
> >> bug that was introduced by commit 78408/78409 about a month ago. I
> >> think the problem is that this commit changes 'calloc' to 'Calloc'
> >> without changing the corresponding 'free' to 'Free'.
> >>
> >> This has nothing to do with the Windows build or installation.
> >> Nothing has changed in the windows build procedure between 4.0.0 and
> 4.0.1.
> >>
> >> ______________________________________________
> >> R-devel at r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> >
> 
> --
> Luke Tierney
> Ralph E. Wareham Professor of Mathematical Sciences
> University of Iowa                  Phone:             319-335-3386
> Department of Statistics and        Fax:               319-335-3017
>     Actuarial Science
> 241 Schaeffer Hall                  email:   luke-tierney at uiowa.edu
> Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu



[Rd] [External] Re: use of the tcltk package crashes R 4.0.1 for Windows
Fox, John