[Rcpp-devel] Rcpp code in my package causes the R process to crash on fedora-clang

Venelin Mitov vmitov at gmail.com
Sun Mar 22 17:30:53 CET 2020


Dear Rcpp-devel list,

I was forwarded to this list after posting the same question on the
R-help list.

In an e-mail received yesterday from a member of the CRAN maintainer
team, I was informed that one of my
packages, PCMBaseCpp (https://CRAN.R-project.org/package=PCMBaseCpp),
is going to be removed from CRAN on April 4th,
due to an R-process crash during unit-tests on the fedora-clang
flavour. The problem is the following:

1. All PCMBaseCpp unit-tests pass on all CRAN flavours except
r-devel-linux-x86_64-fedora-clang.
2. Running devtools::check_rhub(): succeeds on all platforms including
fedora-clang. Hence, I've no way to reproduce the error.
3. The line of code that is causing a segfault error and a crash of
the R-process is a call to the
std::logic_error() constructor. This line of code is found in the package's file
src/QuadraticPoly.h:

throw logic_error(oss.str());

4. However, throwing the above exception is correct - the
exception is intercepted (caught) at a higher functional level of the
PCMBaseCpp package, where it is handled. The same line of code is
executed without problem on all other flavours.

5. Hence, my question is why std::logic_error(oss.str()) is
throwing a memory allocation exception on this specific CRAN flavour?

I couldn't find anywhere in the R extension manual a text stating that
it is illegal to create std::logic_error objects in C++ code. The
fact that the same code is passing on all other flavours including
rhub's fedora-clang suggests that this might be a local problem in the
fedora-clang test environment on CRAN.

Any advice on how I should proceed to prevent the package getting
removed from CRAN?

For you information, here is the stacktrace generated using gdb:

Best regards,
Venelin MITOV


More information about the Rcpp-devel mailing list