Re: [Rd] [External] Possible ALTREP bug

2021-05-28 Thread luke-tierney
Since the INTEGER_ELT, REAL_ELT, etc, functions are fairly new it may be possible to check that places where they are used allow for them to allocate. I have fixed the one that got caught by Gabor's example, and a rchk run might be able to pick up others if rchk knows these could allocate. (I may

Re: [Rd] [External] Possible ALTREP bug

2021-05-28 Thread Gabriel Becker
Hi Jim et al, Just to hopefully add a bit to what Luke already answered, from what I am recalling looking back at that bioconductor thread Elt methods are used in places where there are hard implicit assumptions that no garbage collection will occur (ie they are called on things that aren't PROTEC

[Rd] Typo in Writing R Extensions

2021-05-28 Thread Vincent Goulet via R-devel
Hi, Just noticed this: on line 15296 of the current (master) R-exts.texi (section 7 of the compiled document), one reads would do most likely do different things, to the justifiable Either one of the "do" is in extra. Best, Vincent Goulet Université Laval

Re: [Rd] [External] Possible ALTREP bug

2021-05-28 Thread Jim Hester
>From reading the discussion on the Bioconductor issue tracker it seems like the reason the GC is not suspended for the non-string ALTREP Elt methods is primarily due to performance concerns. If this is the case perhaps an additional flag could be added to the `R_set_altrep_*()` functions so ALTRE

Re: [Rd] [External] Possible ALTREP bug

2021-05-28 Thread Gábor Csárdi
Thank you Luke, that makes a lot of sense, Gabor On Fri, May 28, 2021 at 3:41 PM wrote: > > integer and real Elt methods are not expected to allocate. You would > have to suspend GC to be able to do that. This currently can't be done > from package code. > > Best, > > luke > > On Fri, 28 May 2021

Re: [Rd] Possible ALTREP bug

2021-05-28 Thread Jiefei Wang
Hi Gabor, Calling back to an R function from the ALTREP function is not safe. There has been a heated discussion on why you should not do it and that the main reason that we do not have any R level ALTREP API. If you are interested in it you can find it from this issue: https://github.com/Biocondu

Re: [Rd] [External] Possible ALTREP bug

2021-05-28 Thread luke-tierney
integer and real Elt methods are not expected to allocate. You would have to suspend GC to be able to do that. This currently can't be done from package code. Best, luke On Fri, 28 May 2021, Gábor Csárdi wrote: I have found some weird SEXP corruption behavior with ALTREP, which could be a bug

[Rd] Possible ALTREP bug

2021-05-28 Thread Gábor Csárdi
I have found some weird SEXP corruption behavior with ALTREP, which could be a bug. (Or I could be doing something wrong.) I have an integer ALTREP vector that calls back to R from the Elt method. When this vector is indexed in a lapply(), its first element gets corrupted. Sometimes it's just a ty