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

Reply via email to