I received the following valgrind report that looks possibly relevant: at or around 2025-12-14 12:36:00 UTC
[1] "R Under development (unstable) (2025-08-08 r88534)" ... < my package setup > test_queue_overflow_adversarial.R 8 tests OK ==1713== Warning: set address range perms: large range [0x32ed0028, 0x43cf1fc8) (noaccess) test_queue_overflow_adversarial.R 32 tests OK 2.4s All ok, 127 results (2m 38.0s) > ==1713== ==1713== HEAP SUMMARY: ==1713== in use at exit: 111,563,401 bytes in 15,822 blocks ==1713== total heap usage: 1,472,538 allocs, 1,456,716 frees, 4,581,974,138 bytes allocated ==1713== ==1713== 2,688 bytes in 8 blocks are possibly lost in loss record 267 of 1,370 ==1713== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==1713== by 0x40147D9: calloc (rtld-malloc.h:44) ==1713== by 0x40147D9: allocate_dtv (dl-tls.c:375) ==1713== by 0x40147D9: _dl_allocate_tls (dl-tls.c:634) ==1713== by 0x4DAD7B4: allocate_stack (allocatestack.c:430) ==1713== by 0x4DAD7B4: pthread_create@@GLIBC_2.34 (pthread_create.c:647) ==1713== by 0x580A25F: ??? (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0) ==1713== by 0x5800A10: GOMP_parallel (in /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0) ==1713== by 0x114BC738: convertNegAndZeroIdx (subset.c:150) ==1713== by 0x495BAC5: R_doDotCall (dotcode.c:763) ==1713== by 0x49CFE24: bcEval_loop (eval.c:8668) ==1713== by 0x49B8BA1: bcEval (eval.c:7501) ==1713== by 0x49A8C4B: Rf_eval (eval.c:1167) ==1713== by 0x49ABC8F: R_execClosure (eval.c:2393) ==1713== by 0x49AB8BB: applyClosure_core (eval.c:2306) On Mon, 15 Dec 2025 at 09:49, Dirk Eddelbuettel <[email protected]> wrote: > > > On 14 December 2025 at 22:50, Konrad Rudolph wrote: > | One of my packages is failing on CRAN in R-devel [1], and I was requested > | to fix it. However, it is *only* failing on one specific configuration, > | 'r-devel-linux-x86_64-debian-gcc'. All other combinations — clang on > | Debian, both clang and GCC on Fedora, and Windows — keep running just fine. > | As my package is not using compiled code or anything OS-specific, I am at a > | loss to explain this highly specific failure. Before attempting to build a > | container image with this specific configuration locally (… are these > | configurations available as ready-made images?), I wanted to check if there > | was an obvious change in R-devel which might explain the issue. > > My rocker/drd (for "daily R-devel"; but it now rebuilds weekly) fits that > bill. Access R-devel inside as either Rdevel or via alias RD. > > | There are two failures, both with the same error message: “cannot change > | value of locked binding for '*tmp*'”. My package’s code isn’t attempting to > | directly change `*tmp*`, but it is using eval() to perform subset > | assignment to a complex expression inside an active binding. Here’s a > | minimal code snippet that *should* be equivalent to one of the two > | failures, and which should therefore also fail (in the last line): > | > | x = data.frame(a = 1 : 2, b = c('a', 'b')) > | > | f = function (value) { > | if (missing(value)) { > | evalq(x[1L, ], .GlobalEnv) > | } else { > | assign_expr = substitute(x[1L, ] <- value, list(value = value)) > | eval(assign_expr, .GlobalEnv) > | } > | } > | > | makeActiveBinding('ax', f, .GlobalEnv) > | > | ax[1L] = 3L > | > | I had a look at the changes in in R-devel, but I couldn’t find anything > | obviously relevant. In particular, the code of R_MakeActiveBinding() hasn’t > | been touched in literally decades, and similar for the code that (as far as > | I understand) performs subset assignment, applydefine(). > | > | Does anybody have an idea what might be going on here, or how to debug this > | issue? > > It does fail for me under that drd container [1], and as you noted, not in my > usual R (4.5.2) on Ubuntu. As for the error, I have no idea... > > Dirk > > [1] Your example: > > > x = data.frame(a = 1 : 2, b = c('a', 'b')) > > f = function (value) { > if (missing(value)) { > evalq(x[1L, ], .GlobalEnv) > } else { > assign_expr = substitute(x[1L, ] <- value, list(value = value)) > eval(assign_expr, .GlobalEnv) > } > } > > makeActiveBinding('ax', f, .GlobalEnv) > > ax[1L] = 3L > Error in ax[1L] = 3L : cannot change value of locked binding for '*tmp*' > > > > -- > dirk.eddelbuettel.com | @eddelbuettel | [email protected] > > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-package-devel ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
