I hope it's not too specific in my setup...
I've tried with system2 added on the first line, so:

Example.R:
system2('ls', timeout=5)
cat('Start non-interruptable functions\n')
sample_a <- sample(1:1e7)
sample_b <- sample(1:2e7)
matching <- match(sample_a, sample_b)
cat('Finished\n')
Sys.sleep(10)

And in terminal/bash:
R --vanilla
source('Example.R')
Send ^C between the messages (Start...  until Finished)

Or if you have a more powerful CPU you can increase the samples, the exact code 
doesn't matter very much.
As soon as you restart and source again with the system2 call outcommented, the 
behaviour is different, there is a pause, and your return to the R-prompt.

Best, Emil



On 14/09/2018, 17:39, "luke-tier...@uiowa.edu" <luke-tier...@uiowa.edu> wrote:

    I can't reproduce this. Can you be more precise: exactly where are you
    putting the system2 call and exactly where are you sending the
    interrupt signal with ^C?
    
    Best,
    
    luke
    
    On Fri, 14 Sep 2018, Emil Bode wrote:
    
    > Hi all,
    >
    > I found some strange behaviour, which I think is a bug. Could someone 
make an account for me on Bugzilla or pass on my report?
    >
    > The problem:
    > When pressing Ctrl-C when a file is sourced in R, run from Terminal 
(macOS), sometimes the entire session is ended right away, while I just want to 
stop the script. This is the case when I press Ctrl-C while some functions are 
running that don’t catch the interrupt. However, the behaviour is different 
whether I’m in a clean session (in which case some time is allowed to pass, so 
that when the function returns the script can be interrupted), or whether I 
have called base::system() or system2() with timeout other than 0.
    >
    > Reproducible example:
    > cat('Start non-interruptable functions\n')
    > sample_a <- sample(1:1e7)
    > sample_b <- sample(1:2e7)
    > matching <- match(sample_a, sample_b)
    > cat('Finished\n')
    > Sys.sleep(10)
    >
    > Observed behaviour:
    > In a clean session, when I hit Ctrl-C during the execution of match, 
there is a delay, and as soon as Sys.sleep() is invoked, the script is 
interrupted, I get back my R “>”-prompt (unless options(error=…) is set)
    > But If I add the line system2("ls", timeout = 5), or something similar, 
when I try to break during the first part of the script, my Rsession ends, I 
get thrown back to my terminal-prompt.
    >
    > Desired behaviour:
    > The best setup would probably be if Ctrl-C would always try to break from 
the sourced file, and only if that doesn’t success in n seconds, break the 
rsession altogether, ideally with a customizable option. But maybe that’s too 
hard, so maybe the most pragmatic would be to have 2 hotkeys: one to break from 
a hanging/broken rsession, and one to gently try to break from a script. But at 
least I think it should be:
    >
    > Expected behaviour:
    > Consistent behaviour for Ctrl-C: either trying to break the script, or 
end the session altogether.
    >
    > Some observations:
    >
    >  *   I can still break cleanly during the Sys.sleep(). But for larger 
scripts, it is largely a matter of luck if I hit Ctrl-C during the right moment.
    >  *   I don’t notice any difference between using system or system2, or 
any of the arguments other than timeout provided
    >  *   I don’t notice any difference whether the timeout is actually 
exhausted or not.
    >  *   Later calls to system/system2 don’t change anything (i.e. later 
calling system(…, timeout=0) does not revert back to the old situation)
    >
    > My setup:
    > R 3.5.1 (Feather Spray), run with –vanilla option
    > GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17)
    > macOS High Sierra 10.13.6
    >
    > Best regards,
    > Emil Bode
    >
    > Data-analyst
    >
    > +31 6 43 83 89 33
    > emil.b...@dans.knaw.nl<mailto:emil.b...@dans.knaw.nl>
    >
    > DANS: Netherlands Institute for Permanent Access to Digital Research 
Resources
    > Anna van Saksenlaan 51 | 2593 HW Den Haag | +31 70 349 44 50 | 
i...@dans.knaw.nl<mailto:i...@dans.kn> | 
dans.knaw.nl<applewebdata://71F677F0-6872-45F3-A6C4-4972BF87185B/www.dans.knaw.nl>
    > DANS is an institute of the Dutch Academy KNAW<http://knaw.nl/nl> and 
funding organisation NWO<http://www.nwo.nl/>.
    >
    >   [[alternative HTML version deleted]]
    >
    > ______________________________________________
    > R-devel@r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel
    
    -- 
    Luke Tierney
    Ralph E. Wareham Professor of Mathematical Sciences
    University of Iowa                  Phone:             319-335-3386
    Department of Statistics and        Fax:               319-335-3017
        Actuarial Science
    241 Schaeffer Hall                  email:   luke-tier...@uiowa.edu
    Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to