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 [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
