FWIW I can reproduce on macOS with R 3.5.1. A smaller example:

    system2("ls", timeout = 5); x <- sample(1:1E8)

If I try to interrupt R while that sample call is running, R itself is closed.

Best,
Kevin

On Fri, Sep 14, 2018 at 10:53 AM Emil Bode <emil.b...@dans.knaw.nl> wrote:
>
> 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

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

Reply via email to