[Rcpp-devel] Rcpp_precious_remove again (Windows)
Dominick Samperi
djsamperi at gmail.com
Wed Jan 18 03:15:50 CET 2023
Hello,
I think I found a problem under Windows with the repl code from RInside.
The problem appears if I simply compile the code in
RInside/inst/examples/standard using the Makefile.win there,
after a few hacks to deal with spaces in file names and the direction of
slashes.
The problem appears with the example rinside_interactive0.cpp, but to keep
things simple I've stripped out just the repl code into repl.cpp. It is
attached, along with a Makefile that works under Windows, with g++ from
Rtool42, specifically,
set PATH=c:\Rtools42\x86_64-w64-mingw32.static.posic\bin;%PATH%
When repl.exe is run an extra window pops up, and there are random
terminations, and sometimes a crash, especially if you try to plot
something. The program immediately terminates after plotting.
None of this happens under Linux (Ubuntu), where the program works as
expected.
I tried installing gdb using 'pacman -Sy gdb' (following CRAN docs), and
there were no apparent problems, but some of the DLL's had the wrong
version, and gdb could not be started. (Missing DLL's were msys-ffi-8.dll
and msys-unistring-5.dll.)
I was able to build using Visual Studio, and in that case the app crashes
immediately with a complaint about Rcpp_precious_remove. But here I could
bring up a debugger and step trough code, and sure enough it crashes soon
after the call
GET_CALLABLE("Rcpp_precious_remove"). Stepping into this function leads to
Microsoft code in thread_safe_statics.cpp that implements a critical
section, suggesting
that more than one thread is started.
I wonder if the problem is related to the fact that R is not thread safe?
Or could it be that the preserved objects are bigger under Windows?
I'm working with Rcpp_1.0.9 and RInside_0.2.17, with R-4.2.2.
Thanks,
Dominick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20230117/1e7a46f2/attachment.html>
-------------- next part --------------
// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8; -*-
//
// Example of a planetary motion solver with interactive console
//
// Copyright (C) 2009 Dirk Eddelbuettel
// Copyright (C) 2010 - 2017 Dirk Eddelbuettel and Romain Francois
// Copyright (C) 2017 Dirk Eddelbuettel, Romain Francois and Łukasz Łaniewski-Wołłk
//
// GPL'ed
#include <RInside.h> // for the embedded R via RInside
int main(int argc, char *argv[]) {
RInside R(argc, argv, false, false, true); // Create an embedded R instance
std::cout << "[ You can finish the with Ctrl+D ]" << std::endl;
R.parseEval("options(prompt = 'R console > ')");
R.parseEval("X11()");
R.repl() ;
R.parseEval("dev.off()");
exit(0);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Makefile
Type: application/octet-stream
Size: 347 bytes
Desc: not available
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20230117/1e7a46f2/attachment.obj>
More information about the Rcpp-devel
mailing list