I wanted to circle back on this old thread (from back in November 2025!) Thanks to the excellent advice received (see previous responses in this thread), I managed to (a) reproduce the errors and (b) fix them, with the eventual result that fastTopics is back on CRAN. It was a long road, so I wanted to briefly share with all of you the steps I took to reproduce the errors that arose in the "clang USBAN" test environment (I'm ignoring steps that were specific to fastTopics and therefore unlikely to be of interest to others). Perhaps these instructions will be useful to others who find themselves in a similar situation:
# Steps taken to replicate clang USBAN test environment. # See these links for more details: # https://www.stats.ox.ac.uk/pub/bdr/memtests/clang-UBSAN/fastTopics/ # https://www.stats.ox.ac.uk/pub/bdr/memtests/README.txt # https://github.com/rocker-org/r-devel-san-clang docker pull --platform linux/x86_64 rocker/r-devel-ubsan-clang docker run -lm -v $(pwd):/data -ti rocker/r-devel-ubsan-clang cd /data apt-get update apt-get install cmake Rdevel --no-save > install.packages("rmarkdown") > install.packages("remotes") > library(remotes) > # Now install fastTopics. export UBSAN_OPTIONS="print_stacktrace=1" Rscriptdevel --vanilla single_cell_rnaseq_basic.R \ > single_cell_rnaseq_basic.out 2> single_cell_rnaseq_basic.err I'll note that Ben was correct in his speculation about the source of the "null pointer" errors, although there was an additional error that arose from an edge case that I failed to handle. More generally, my takeaway from this experience is that we (the R package developers) have been spoiled to have so many user-friendly resources that mimic the CRAN test environments (e.g., winbuilder), and it was a very steep learning curve to do this manually with the Docker containers (generously provided by Dirk). Peter On Fri, Nov 7, 2025 at 7:35 PM Dirk Eddelbuettel <[email protected]> wrote: > > On 7 November 2025 at 15:14, Peter Carbonetto wrote: > | However, I was not able to reproduce the exact errors Dirk obtained by > | running the R code purl'ed from the single_cell_rnaseq_basic.Rmd > vignette. > | I thought that this might work: > | > | R -d valgrind --vanilla < single_cell_rnaseq_basic.R > | > | but this did not produce any of the "runtime errors" such as: > | > | > /usr/local/lib/R/site-library/RcppArmadillo/include/current/armadillo_bits/Mat_meat.hpp:7043:26: > | runtime error: reference binding to null pointer of type 'const double' > | > | Dirk, could you please share the exact R or Rscript command you ran to > | obtain these errors? In addition, do I need to install fastTopics and the > | other R packages in a specific way as well? That is, are there special > | flags (perhaps existing somewhere in > | https://www.stats.ox.ac.uk/pub/bdr/memtests/README.txt) that are needed > to > | activate these extra debugging checks? > > You want 'RD', not 'R'. From the container's github repo README.mdL > > Note that the instrumented version of R is available on the path as > Rdevel, symbolically linked as RD, and that the instrumented versions of > Rscript is Rscriptdevel with symbolic link RDscript. Based on the > R-devel > sources, they use the sanitizer setup that is the focuse here whereas > the > R and Rscript binaries come from the standard binary package and > correspond to R-release without any sanitizer instrumentation. So use RD > and RDscript to inspect undefined behavior. > > Also not sure why you added '-d valgrind'. That is a very fine tool, but > its > use tends to be independent of ASAN/UBSAN and result in separate reports. > > Best, Dirk > > -- > dirk.eddelbuettel.com | @eddelbuettel | [email protected] > [[alternative HTML version deleted]] ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
