[Rd] library(tcltk) v. SIGPIPE BUG (?!?)

Martin Maechler maechler at stat.math.ethz.ch
Wed Dec 12 09:02:57 CET 2012


>>>>> "CM" == Cook, Malcolm <MEC at stowers.org>
>>>>>     on Tue, 11 Dec 2012 16:50:58 -0600 writes:

    CM> Excellent, thanks for the workaround, that gets _me_ by, for now.....
    CM> ~Malcolm


    >> -----Original Message-----
    >> From: Gabor Grothendieck [mailto:ggrothendieck at gmail.com]
    >> Sent: Tuesday, December 11, 2012 2:40 PM
    >> To: Cook, Malcolm
    >> Cc: r-discussion at listserv.stowers.org; r-devel at r-project.org; phgrosjean at sciviews.org; Blanchette, Marco
    >> Subject: Re: library(tcltk) v. SIGPIPE BUG (?!?)
    >> 
    >> On Tue, Dec 11, 2012 at 3:14 PM, Cook, Malcolm <MEC at stowers.org> wrote:
    >> > Hi R-devel, tcltk devel, and sqldf devel,
    >> >
    >> > The transcript below shows how loading the tcl/tk library in under R causes subprocesses to ignore SIGPIPE.
    >> >
    >> > I am including the developer of the (wonderful) sqldf package since it requires tcltk and you might like to make this dependence
    >> optional to the user (at least until this is fixed in tcltk).
    >> >
    >> > Am I mistaken in calling this a 'bug'?

well, at least an unfortunate feature ;-)

    >> > Any insights appreciated!

Could it be that the problem in the severity you've reported it,
is  Mac specific ?

For me, on Linux (R 2.15.2 patched):

    > system(intern=TRUE,'yes | head ')
     [1] "y" "y" "y" "y" "y" "y" "y" "y" "y" "y"

    > require(tcltk)
    Loading required package: tcltk
    Loading Tcl/Tk interface ... done
    > system(intern=TRUE,'yes | head ')
    yes: standard output: Broken pipe
    yes: write error
     [1] "y" "y" "y" "y" "y" "y" "y" "y" "y" "y"
    > system(intern=TRUE,'yes | head ')
    yes: standard output: Broken pipe
    yes: write error
     [1] "y" "y" "y" "y" "y" "y" "y" "y" "y" "y"
    > system(intern=TRUE,'yes | head -6 ')
    yes: standard output: Broken pipe
    yes: write error
    [1] "y" "y" "y" "y" "y" "y"

So things continue to  ``work'' there, 
although with the extra "warning" messages.


    >> >
    >> > Thanks,
    >> >
    >> > Malcolm Cook
    >> > Computational Biology - Stowers Institute for Medical Research
    >> >
    >> >
    >> >> system(intern=TRUE,'yes | head ')
    >> >  [1] "y" "y" "y" "y" "y" "y" "y" "y" "y" "y"
    >> >> library(tcltk)
    >> > Loading Tcl/Tk interface ... done
    >> >> system(intern=TRUE,'yes | head ')
    >> >
    >> > ### this now does not return to the prompt and Looking at 'top' shows that 'yes' is running until I hit ctrl-c, after which it returns.
    >> > C-c C-c
    >> >   [1] "y" "y" "y" "y" "y" "y" "y" "y" "y" "y"
    >> >
    >> >
    >> >> sessionInfo()
    >> > R version 2.15.1 (2012-06-22)
    >> > Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
    >> >
    >> > locale:
    >> > [1] C
    >> >
    >> > attached base packages:
    >> > [1] tcltk     stats     graphics  grDevices utils     datasets  methods   base
    >> >>
    >> >
    >> >
    >> 
    >> As a workaround specify the "R" engine instead of the "tcl" engine in
    >> wihch case gsubfn (which is called by sqldf) won't try to use the
    >> tcltk package:
    >> 
    >> options(gsubfn.engine = "R")
    >> library(sqldf)
    >> 
    >> 
    >> 
    >> --
    >> Statistics & Software Consulting
    >> GKX Group, GKX Associates Inc.
    >> tel: 1-877-GKX-GROUP
    >> email: ggrothendieck at gmail.com

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



More information about the R-devel mailing list