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
// -*- 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); }
Makefile
Description: Binary data
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel