[Rcpp-devel] Rcpp_precious_remove again (Windows)

Dirk Eddelbuettel edd at debian.org
Wed Jan 18 03:35:04 CET 2023


Hi Dominick,

First reflex: uh-oh as 'Rcpp_precious_remove' created some headaches for some
people when mixing Rcpp and packages built with Rcpp but not the current one.
We think all this got squared away an Rcpp release or two ago so as a first
step please make sure _all_ involved packaes are current with CRAN and
rebuilt.

On 17 January 2023 at 21:15, Dominick Samperi wrote:
| 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.

(A small and focused PR would be appreciated if there is some cleanup needed).
 
| 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.

Yes it built for me. And runs fine (under Ubuntu 22.10). I don't have Windows
around. 
 
| 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 wonder if instead of / in addition to gdb you could instrument your windows
binary to log copiously?

| 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?

That would bite Linux as well as Windows.
 
| Or could it be that the preserved objects are bigger under Windows?

I don't see how because relative to machine memory these objects are
still tiny,
 
| I'm working with Rcpp_1.0.9 and RInside_0.2.17, with R-4.2.2.

All good. Maybe rebuild RInside under that Rcpp just to be sure.

Cheers, Dirk

| 
| Thanks,
| Dominick
| x[DELETED ATTACHMENT repl.cpp, plain text]
| x[DELETED ATTACHMENT Makefile, Untyped binary data]
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
-- 
dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org


More information about the Rcpp-devel mailing list