-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 11-11-16 05:18 PM, peter dalgaard wrote: > > On Nov 16, 2011, at 22:38 , Ben Bolker wrote: > >> Someone inquired on StackOverflow about apparently non-deterministic >> graphics behaviour in R. I noticed that they were using cex="*" and >> discovered some potentially weird behavior. > > It can be reproduced much more simply (well, not the hang, but bad enough): > > In a plain R application console (OSX Snow Leopard), > > for (i in 1:100) plot(1:10,cex="*") > > will _sometimes_ show big circles, indicating random data being picked up. > > The "cex" is by definition numeric, so you can't expect to be able to pass a > character string, but the code should check.
Looks (?) like the check could go in FixupCex (which already tests for isReal, isInteger, and isLogical) in src/main/plot.c , unless there is a wish to catch it earlier/in R code. It's mildly surprising to me that people can continue to find odd cases like this after more than 10 years (and imagine how many cumulative hours of R use ...) [I'm assuming that this hole has been present for a log time: I don't have the patience to do the SVN archaeology to find out how long.] > >> >> On repeated runs of the same code I can get different PNGs. If I set >> the number of runs high enough, I seem to be able to get R to hang. >> If I do a single version plotting to an interactive graphics window I >> can get the point sizes to jump around as I resize the window (someone >> reported being able to reproduce that behaviour in the Windows GUI as well). >> >> This is clearly a user error, but non-deterministic behaviour (and >> hanging) are a little disturbing. >> >> I haven't had a chance yet to try to dig in and see what's happening >> but thought I would report to see if anyone else could reproduce/figure >> it out. >> >> Ben Bolker >> >> >> ######################## >> ## n <- 100 ## hangs R >> >> n <- 33 >> >> fn <- paste("tmp",seq(n),"png",sep=".") >> for (i in seq(n)) { >> png(fn[i]) >> plot(1:10,1:10,cex="*"); >> dev.off() >> } >> >> ff <- subset(file.info(fn),select=size) >> ff <- ff[!duplicated(ff$size),,drop=FALSE] >> table(ff$size) >> require(png) >> pngs <- lapply(rownames(ff),readPNG) >> >> png.to.img <- function(x) matrix(rgb(x[,,1],x[,,2],x[,,3]), >> nrow=dim(x)[1],ncol=dim(x)[2]) >> >> imgs <- lapply(pngs,png.to.img) >> >> par(mfrow=c(2,2)) >> lapply(imgs,function(x) { >> plot(0:1,0:1,type="n",ann=FALSE,axes=FALSE) >> rasterImage(x,0,0,1,1) >> }) >> >> ######################### >> >>> sessionInfo() >> R Under development (unstable) (2011-10-06 r57181) >> Platform: i686-pc-linux-gnu (32-bit) >> >> attached base packages: >> [1] stats graphics grDevices utils datasets methods base >> >> other attached packages: >> [1] glmmADMB_0.6.5 MASS_7.3-14 png_0.1-3 >> >> loaded via a namespace (and not attached): >> [1] grid_2.15.0 lattice_0.19-33 nlme_3.1-102 tools_2.15.0 >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJOxDiKAAoJED2whTVMEyK9ThoIAIjyMpzZqsjUpJVbAb9K8IrL LbSFh8zb+cZb90ABkFwJaZ2FNTKCjPrUzOYzxxHuU9AY0bdPQGbIm2hvQfzcuMlc urS/ILIMzZEFSYkqkj0mWI9SADyJ+W0YeN/t3EuWy8nZqUkYQZ8M0GsuXjhtUL/i hVJU0uuIWCOCHpeI3SQKoxviTE6MQFRXXWhCAJx01h8ee/5UQ5GSGB7Er2Zilld3 0sLI6dmoF7gbeYqz33MaEpQ7geJoW3tfnVbQWUlF86+jGGv5trIqWYIp33OYIxMO u2YUq51vB+4uIRPFJ4Oyr+nJF0Z9NH4IJBipp/bF6wQ5u6JdXFqKTPeQ1V6m5qk= =YajM -----END PGP SIGNATURE----- ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel