[R] [R-SIG-Mac] How to interrupt an R process that hangs

Simon Urbanek simon.urbanek at r-project.org
Mon Mar 15 21:50:49 CET 2010


On Mar 15, 2010, at 16:20 , Matthew Keller wrote:

> Hi all,
>
> Thanks Simon and Duncan for the help. Sorry to be dense, but I'm still
> unsure how to interrupt such processes. Here's an example:
>
> for (i in 1:100000){
> 	a <- matrix(rnorm(100000*100000),ncol=100000)
> 	b <- svd(a)	}
>
> If you run this,

How could I?

 > for (i in 1:100000){
+ a <- matrix(rnorm(100000*100000),ncol=100000)
+ b <- svd(a)}
Error in rnorm(1e+05 * 1e+05) : invalid arguments
In addition: Warning message:
In rnorm(1e+05 * 1e+05) : NAs introduced by coercion

The only way to run that code at all is to scale it down, e.g.

 >  for (i in 1:100000){
+ a <- matrix(rnorm(1000*1000),ncol=1000)
+ b <- svd(a)
+ }

and when interrupted it comes back within 5s on my Mac ...

I get your general point, but the fact remains that you cannot  
interrupt native code unless it has provisions to do so. The reason is  
that it is impossible to cleanup native code properly (i.e if the  
author did not think of it) so R allows interruption only if the code  
tells R that it is safe to do so.


> R will hang (i.e., it's a legitimate execution, it
> will just take a really long time to execute). The most obvious
> solution is to write code that doesn't do unintended things, but
> that's not always possible. Is there a way to interrupt it? I tried:
>
> kill -s INT <PID>
>
> and at least on Mac it had no effect.

.. if you are in C code, see above. Otherwise it interrupts the R code  
(and so doe ^C or pushing the Stop button etc....).

Cheers,
Simon



>
>
> On Mon, Mar 15, 2010 at 1:19 PM, Simon Urbanek
> <simon.urbanek at r-project.org> wrote:
>>
>> On Mar 15, 2010, at 14:42 , Adam D. I. Kramer wrote:
>>
>>> +1--this is the single most-annoying issue with R that I know of.
>>>
>>> My usual solution, after accomplishing nothing as R spins idly for a
>>> couple
>>> hours, is to kill the process and lose any un-saved work.   
>>> save.history()
>>> is
>>> my friend, but is a big delay when you work with big data sets as  
>>> I do, so
>>> I
>>> don't run it after every command.
>>>
>>> I have cc'd r-help here, however, because I experience this  
>>> problem with
>>> non-OSX R as well...when I run it in Linux or from the OSX command- 
>>> line (I
>>> compile R for Darwin without aqua/R-framework), the same thing  
>>> happens.
>>>
>>> Is there some way around this? Is this a known problem?
>>>
>>
>> "Hanging" for a long period of time is usually caused by poorly  
>> written
>> C/Fortran code. You can always interrupt R as long as it is in the  
>> R code.
>> Once you load a package that uses native code (C/Fortran/..) you  
>> have to
>> rely on the sanity of the developer to call R_CheckUserInterrupt() or
>> rchkusr() often enough (see 6.12 in R-ext). If you have some  
>> particular
>> package that does not do that, I would suggest alerting the author.  
>> By
>> definition this requires cooperation from authors, because  
>> interrupting
>> random code forcefully (as it was possible many years ago) creates  
>> leaks and
>> unstable states.
>>
>> Cheers,
>> Simon
>>
>>
>>
>>> Google searching suggests no solution, timeline, or anything, but  
>>> the
>>> problem has been annoying users for at least twelve years:
>>> http://tolstoy.newcastle.edu.au/R/help/9704/0151.html
>>>
>>> Cordially,
>>> Adam
>>>
>>> On Mon, 15 Mar 2010, Matthew Keller wrote:
>>>
>>>> HI all,
>>>>
>>>> Apologies for this question. I'm sure it's been asked many times,  
>>>> but
>>>> despite 20 minutes of looking, I can't find the answer. I never use
>>>> the GUI, I use emacs, but my postdoc does, so I don't know what to
>>>> tell her about the following:
>>>>
>>>> Occasionally she'll mess up in her code and cause R to hang
>>>> indefinitely (e.g., R is trying to do something that will take  
>>>> days).
>>>> In these situations, is there an option other than killing R (and  
>>>> the
>>>> work you've done on your script to that point)?
>>>>
>>>> Thank you,
>>>>
>>>> Matthew Keller
>>>>
>>>>
>>>> --
>>>> Matthew C Keller
>>>> Asst. Professor of Psychology
>>>> University of Colorado at Boulder
>>>> www.matthewckeller.com
>>>>
>>>> _______________________________________________
>>>> R-SIG-Mac mailing list
>>>> R-SIG-Mac at stat.math.ethz.ch
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>>>
>>>
>>> _______________________________________________
>>> R-SIG-Mac mailing list
>>> R-SIG-Mac at stat.math.ethz.ch
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>>
>>>
>>
>>
>
>
>
> -- 
> Matthew C Keller
> Asst. Professor of Psychology
> University of Colorado at Boulder
> www.matthewckeller.com
>
>



More information about the R-help mailing list