[Rd] Error generated by .Internal(nchar) disappears when debugging

Michael Weylandt michael.weylandt at gmail.com
Tue Oct 6 02:04:30 CEST 2015


Doesn't the byte-compiler inline calls like nchar() to call the .Internal directly for certain optimization levels?  If the 'internal' signature changed in a point release, I'd expect an issue like the below.  (I'm pretty sure CRAN packages are byte-compiled at build-time, but don't use Windows so can't confirm)

To Joris' initial question. I think the debug machinery calls the unoptimized (no-inline) function. 

Michael

> On Oct 5, 2015, at 6:57 PM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote:
> 
>> On 05/10/2015 7:24 PM, Matt Dowle wrote:
>> Joris Meys <jorismeys <at> gmail.com> writes:
>> 
>>> 
>>> Hi all,
>>> 
>>> I have a puzzling problem related to nchar. In R 3.2.1, the internal
>> nchar
>>> gained an extra argument (see
>>> https://stat.ethz.ch/pipermail/r-announce/2015/000586.html)
>>> 
>>> I've been testing code using the package copula, and at home I'm still
>>> running R 3.2.0 (I know, I know...). When trying the following code, I
>> got
>>> an error:
>>> 
>>>> library(copula)
>>>> fgmCopula(0.8)
>>> Error in substr(sc[i], 2, nchar(sc[i]) - 1) :
>>>  4 arguments passed to .Internal(nchar) which requires 3
>>> 
>>> Cheers
>>> Joris
>> 
>> 
>> I'm seeing a similar problem. IIUC, the Windows binary .zip from CRAN of 
>> any package using base::nchar is affected. Could someone check my answer 
>> here is correct please : http://stackoverflow.com/a/32959306/403310
> 
> Nobody has posted a simple reproducible example here, so it's kind of
> hard to say.
> 
> I would have guessed that a change to the internal signature of the C
> code underlying nchar() wouldn't have any effect on a package that
> called the R nchar() function.
> 
> When I put together my own example (a tiny package containing a function
> calling nchar(), built to .zip using R 3.2.2, installed into R 3.2.0),
> it confirmed my guess.
> 
> On the other hand, if some package is calling the .Internal function
> directly, I'd expect that to break.  Packages shouldn't do that.
> 
> So I'd say there's been no evidence posted of a problem in R here,
> though there may be problems in some of the packages involved.  I'd
> welcome an example that provided some usable evidence.
> 
> Duncan Murdoch
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list