Skip to content

R-devel internal errors during check produce?

11 messages · Kurt Hornik, Jan Gorecki, Deepayan Sarkar +2 more

#
Hi R developers,

On R-devel (2020-06-24 r78746) I am getting those two new exceptions
during R check. I found a change which eventually may be related
https://github.com/wch/r-source/commit/69de92b9fb1b7f2a7c8d1394b8d56050881a5465
I think this may be a regression. I grep'ed package manuals and R code
for unique.default but don't see any. Usage section of the unique
method looks fine as well. Errors look a little bit like internal
errors.

* checking Rd \usage sections ... NOTE
 Error in unique.default(env_list) :
   LENGTH or similar applied to environment object
 Calls: <Anonymous> ... .get_S3_generics_as_seen_from_package ->
unique -> unique.default
 Execution halted
 The \usage entries for S3 methods should use the \method markup and not
 their full name.
 * checking S3 generic/method consistency ... WARNING
 Error in unique.default(env_list) :
   LENGTH or similar applied to environment object
 Calls: <Anonymous> ... .get_S3_generics_as_seen_from_package ->
unique -> unique.default

I don't think if it is related but I build R-devel with extra args:
--with-recommended-packages --enable-strict-barrier --disable-long-double
I check with:
--as-cran --no-manual
To reproduce download current data.table from CRAN (1.12.8) and run R check

Best regards,
Jan Gorecki
#
So the unique.default is from the R tools package during checks.
I don't see those issues on CRAN checks.
Exact environment where I am reproducing this issue is a fresh ubuntu,
no R packages pre-installed
docker pull registry.gitlab.com/jangorecki/dockerfiles/r-devel
https://gitlab.com/jangorecki/dockerfiles/-/raw/master/r-devel/Dockerfile
On Sat, Jun 27, 2020 at 12:37 AM Jan Gorecki <j.gorecki at wit.edu.pl> wrote:
2 days later
#
I cannot reproduce this locally (and have no clues about docker).
Perhaps you can try to debug this on your end?  And see what env_list is
when the error occurs?

Best
-k

        
#
>> So the unique.default is from the R tools package during
    >> checks.  I don't see those issues on CRAN checks.

    > I cannot reproduce this locally (and have no clues about
    > docker).  Perhaps you can try to debug this on your end?
    > And see what env_list is when the error occurs?

    > Best -k

Indeed, if it is a bug in R (as opposed to being an assumption
that 'data.table' makes about undocumented R internals), it
should be reproducible with a very small dummy package instead
of data.table. ... or actually reproducible with relatively
simple R code calling unique() not envolving any non base package.

Martin


    >> Exact environment where I am reproducing this issue is a
    >> fresh ubuntu, no R packages pre-installed docker pull
    >> registry.gitlab.com/jangorecki/dockerfiles/r-devel
    >> https://gitlab.com/jangorecki/dockerfiles/-/raw/master/r-devel/Dockerfile

    >> On Sat, Jun 27, 2020 at 12:37 AM Jan Gorecki
>> <j.gorecki at wit.edu.pl> wrote:
>>> 
    >>> Hi R developers,
    >>> 
    >>> On R-devel (2020-06-24 r78746) I am getting those two
    >>> new exceptions during R check. I found a change which
    >>> eventually may be related
    >>> https://github.com/wch/r-source/commit/69de92b9fb1b7f2a7c8d1394b8d56050881a5465
    >>> I think this may be a regression. I grep'ed package
    >>> manuals and R code for unique.default but don't see
    >>> any. Usage section of the unique method looks fine as
    >>> well. Errors look a little bit like internal errors.
    >>> 
    >>> * checking Rd \usage sections ... NOTE Error in
    >>> unique.default(env_list) : LENGTH or similar applied to
    >>> environment object Calls: <Anonymous>
    >>> ... .get_S3_generics_as_seen_from_package -> unique ->
    >>> unique.default Execution halted The \usage entries for
    >>> S3 methods should use the \method markup and not their
    >>> full name.  * checking S3 generic/method consistency
    >>> ... WARNING Error in unique.default(env_list) : LENGTH
    >>> or similar applied to environment object Calls:
    >>> <Anonymous> ... .get_S3_generics_as_seen_from_package ->
    >>> unique -> unique.default
    >>> 
    >>> I don't think if it is related but I build R-devel with
    >>> extra args: --with-recommended-packages
    >>> --enable-strict-barrier --disable-long-double I check
    >>> with: --as-cran --no-manual To reproduce download
    >>> current data.table from CRAN (1.12.8) and run R check
    >>> 
    >>> Best regards, Jan Gorecki

    >> ______________________________________________
    >> R-devel at r-project.org mailing list
    >> https://stat.ethz.ch/mailman/listinfo/r-devel

    > ______________________________________________
    > R-devel at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel
#
Thank you both,
You are absolutely correct that example should be minimal, so here it is.

l = list(a=new.env(), b=new.env())
unique(l)

Just for completeness, env_list during check that raises error

env_list <- list(baseenv(),
  as.environment("package:graphics"),
  as.environment("package:stats"),
  as.environment("package:utils"),
  as.environment("package:methods")
)
unique(env_list)

Best regards,
Jan

On Mon, Jun 29, 2020 at 5:42 PM Martin Maechler
<maechler at stat.math.ethz.ch> wrote:
#
Thanks ... but the above work fine for me.  E.g., 

R> l = list(a=new.env(), b=new.env())
R> unique(l)
[[1]]
<environment: 0x55695f2f6d20>

[[2]]
<environment: 0x55695f2f6930>

Best
-k
#
>> Thank you both, You are absolutely correct that example
    >> should be minimal, so here it is.

    >> l = list(a=new.env(), b=new.env()) unique(l)

    >> Just for completeness, env_list during check that raises
    >> error

    >> env_list <- list(baseenv(),
    >>   as.environment("package:graphics"),
    >>   as.environment("package:stats"),
    >>   as.environment("package:utils"),
    >>   as.environment("package:methods") )

    >> unique(env_list)

    > Thanks ... but the above work fine for me.  E.g.,

    R> l = list(a=new.env(), b=new.env())
    R> unique(l)
    > [[1]] <environment: 0x55695f2f6d20>

    > [[2]] <environment: 0x55695f2f6930>

    > Best -k

Ditto here;  also your (Jan) 2nd example works fine.

So, you must have loaded some (untidy) packages / code which redefine
standard base R behavior ?

Martin
#
On Tue, Jun 30, 2020 at 1:32 PM Martin Maechler
<maechler at stat.math.ethz.ch> wrote:
Looking inside Jan's Dockerfile, it turns out that he is configuring R with

./configure --with-recommended-packages --enable-strict-barrier
--disable-long-double

and with that I can reproduce:
Error in unique.default(list(new.env())) :
 LENGTH or similar applied to environment object

--enable-strict-barrier is enough to reproduce the error.

-Deepayan
#
No packages are being loaded, or even installed.
Did you try running the example on R-devel built with flags I have
provided in this email?
I checked now and it is required to use --enable-strict-barrier to
reproduce the issue.

On Tue, Jun 30, 2020 at 9:02 AM Martin Maechler
<maechler at stat.math.ethz.ch> wrote:
#
> No packages are being loaded, or even installed.
    > Did you try running the example on R-devel built with flags I have
    > provided in this email?

    > I checked now and it is required to use --enable-strict-barrier to
    > reproduce the issue.

No, I (and Kurt probably, too) had overlooked the extra flags
setting you'd used ....

Thank you and Deepayan for checking more there.

I now agree this is something we (R Core) should address one way
or the other.

Martin


    > On Tue, Jun 30, 2020 at 9:02 AM Martin Maechler
> <maechler at stat.math.ethz.ch> wrote:
>> 
    >> >>>>> Kurt Hornik
    >> >>>>>     on Tue, 30 Jun 2020 06:20:57 +0200 writes:
    >> 
    >> >>>>> Jan Gorecki writes:
    >> >> Thank you both, You are absolutely correct that example
    >> >> should be minimal, so here it is.
    >> 
    >> >> l = list(a=new.env(), b=new.env()) unique(l)
    >> 
    >> >> Just for completeness, env_list during check that raises
    >> >> error
    >> 
    >> >> env_list <- list(baseenv(),
    >> >>   as.environment("package:graphics"),
    >> >>   as.environment("package:stats"),
    >> >>   as.environment("package:utils"),
    >> >>   as.environment("package:methods") )
    >> 
    >> >> unique(env_list)
    >> 
    >> > Thanks ... but the above work fine for me.  E.g.,
    >> 
    R> l = list(a=new.env(), b=new.env())
    R> unique(l)
    >> > [[1]] <environment: 0x55695f2f6d20>
    >> 
    >> > [[2]] <environment: 0x55695f2f6930>
    >> 
    >> > Best -k
    >> 
    >> Ditto here;  also your (Jan) 2nd example works fine.
    >> 
    >> So, you must have loaded some (untidy) packages / code which redefine
    >> standard base R behavior ?
    >> 
    >> Martin
    >> 
    >>
#
Thanks. Fixed in R-devel in r78754. This was related to a fix for
PR#17809, not the change to unique.default.

Best,

luke
On Tue, 30 Jun 2020, Jan Gorecki wrote: