From pburns at pburns.seanet.com  Fri Nov 18 10:14:00 2011
From: pburns at pburns.seanet.com (Patrick Burns)
Date: Fri, 18 Nov 2011 09:14:00 +0000
Subject: [Rd] strange behavior from cex="*"
In-Reply-To: <4EC4556E.4050507@gmail.com>
References: <4EC42D66.502@gmail.com>
	<1C6B85B4-9803-407B-83BB-19159CCB2778@gmail.com>
	<4EC4388A.6070502@gmail.com> <4EC4556E.4050507@gmail.com>
Message-ID: <4EC621D8.7020100@pburns.seanet.com>

Someone ambitious could find problems like
this using random input testing like I talked
about at useR last summer.

http://www.burns-stat.com/pages/Present/random_input_test_annotated.pdf

Testing graphics would be more labor intensive
than the testing I do, but you could think of it
as a video game.

On 17/11/2011 00:29, Duncan Murdoch wrote:
> On 11-11-16 5:26 PM, Ben Bolker wrote:
> > -----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.
>
> Yes, that's where the check was missed. I'll fix it. The other
> parameters appear to have been checked properly.
>
> > 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.]
>
> So now you can prove me wrong about the other parameters...
>
> Duncan Murdoch
>
>
> >
> >>
> >>>
> >>> 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 at 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 at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Patrick Burns
pburns at pburns.seanet.com
twitter: @portfolioprobe
http://www.portfolioprobe.com/blog
http://www.burns-stat.com
(home of 'Some hints for the R beginner'
and 'The R Inferno')



[Rd] strange behavior from cex="*"
Patrick Burns