On Thu, Jan 3, 2013 at 4:32 AM, Karl Forner <karl.for...@gmail.com> wrote: > Hello, > > The point is that I do not use tcltk, it gets loaded probably as a > dependency of a dependency of a package. > When I unload it all work perfectly fine. I just found it because one > of my computer did not have tk8.5 installed, and did not exhibit the > mentioned bug. So I really think something should be done about this. > Maybe the "gui loop" should not be run a the the loading of the tcltk > package, but > at the first function ran, or something like this. > > As you can see in my example code, the in-memory database is opened in > the parallel code... > > Best, > Karl
If the package you are referring to is gsubfn or a package dependent on it such as sqldf then you can ask it to use the R engine rather than the tcltk engine by using this option: options(gsubfn.engine = "R") There is more in the FAQs on the gsubfn home page: http://gsubfn.googlecode.com > > On Mon, Dec 31, 2012 at 10:58 PM, Simon Urbanek > <simon.urba...@r-project.org> wrote: >> >> On Dec 31, 2012, at 1:08 PM, Karl Forner wrote: >> >>> Hello, >>> >>> I spent a lot of a time on a weird bug, and I just managed to narrow it >>> down. >>> >> >> First, tcltk and multicore don't mix well, see the warning in the >> documentation (it mentions GUIs and AFAIR tcltk fires up a GUI event loop >> even if you don't actually create GUI elements). Second, using any kind of >> descriptors in parallel code is asking for trouble since those will be owned >> by multiple processes. If you use databases files, etc. they must be opened >> in the parallel code, they cannot be shared by multiple workers. The latter >> is ok in your code so you're probably bitten by the former. >> >> Cheers, >> Simon >> >> >> >>> In parallel code (here with parallel::mclappy, but I got it >>> doMC/multicore too), if the library(tcltk) is loaded, R hangs when >>> trying to open a DB connection. >>> I got the same behaviour on two different computers, one dual-core, >>> and one 2 xeon quad-core. >>> >>> Here's the code: >>> >>> library(parallel) >>> library(RSQLite) >>> library(tcltk) >>> #unloadNamespace("tcltk") >>> >>> res <- mclapply(1:2, function(x) { >>> db <- DBI::dbConnect("SQLite", ":memory:") >>> }, mc.cores=2) >>> print("Done") >>> >>> When I execute it (R --vanilla < test_parallel_db.R), it hangs >>> forever, and I have to type several times CTRL+C to interrupt it. I >>> then get this message: >>> >>> Warning messages: >>> 1: In selectChildren(ac, 1) : error 'Interrupted system call' in select >>> 2: In selectChildren(ac, 1) : error 'Interrupted system call' in select >>> >>> Then, just remove library(tcltk), or uncomment >>> unloadNamespace("tcltk"), and it works fine again. >>> >>> I guess there's a bug somewhere, but where exactly ? >>> >>> Best, >>> >>> Karl Forner >>> >>> Further info: >>> >>> >>> R version 2.15.1 (2012-06-22) -- "Roasted Marshmallows" >>> Copyright (C) 2012 The R Foundation for Statistical Computing >>> ISBN 3-900051-07-0 >>> Platform: x86_64-unknown-linux-gnu (64-bit) >>> >>> ubuntu 12.04 and 12.10 >>> >>> ubuntu package tk8.5 >>> >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >>> >> > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel