Erik Iverson
2008-May-22 18:08 UTC
[Rd] grid error message when resizing graphics window after tcltk loaded
Dear R-devel / Dr. Murrell - This is similar but ultimately unrelated (I think) to something I posted about in February. See my original post here: https://stat.ethz.ch/pipermail/r-devel/2008-February/048278.html I start R with the --vanilla option, and run the following code. ## BEGIN SAMPLE R CODE library(grid) for(i in seq(0, 1, by = .1)) { for(j in seq(0, 1, by = .1)) { angle <- runif(1, 1, 180) col <- sample(colors(), 1) pushViewport(viewport(x = i, y= j, width = .1, height = .1, angle = angle, gp = gpar(col = col))) grid.rect() popViewport() } } ## END SAMPLE R CODE I can then resize the resulting R Graphics Device window and everything seems to work fine. If I then do issue 'library(tcltk)', and reissue the above code, and then resize the resulting window to something fairly small, I get the following error that shows up at my R prompt: Error: Cannot pop the top-level viewport (grid and graphics output mixed?) The error seems harmless, but eventually, after doing this "enough", and closing the graphics window, R may segfault, *** caught segfault *** address 0xfc, cause 'memory not mapped' Possible actions: 1: abort (with core dump, if enabled) 2: normal R exit 3: exit R without saving workspace 4: exit R saving workspace I have tracked down the error message I am receiving with some very rudimentary techniques, and narrowed it down to the L_unsetviewport function defined in grid.c. The error string in question appears two places in that function, and I determined in my case that it is the first instance that is actually outputting the error. That's about as far as I can take it unfortunately. Again, this only seems to happen after I load the tcltk package. I am running RHEL version 4 with KDE on a 32-bit Intel processor. Here is my session info, immediately after starting R... sessionInfo() R version 2.7.0 (2008-04-22) i686-pc-linux-gnu locale: LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base Thanks, Erik Iverson
Erik Iverson
2008-May-23 02:03 UTC
[Rd] grid error message when resizing graphics window after tcltk loaded
I unfortunately am having a far more difficult time replicating this on my home computer. > sessionInfo() R version 2.7.0 (2008-04-22) i486-pc-linux-gnu locale: LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base I ran the same code loop as below after loading the tcltk package, and resized the resulting window dozens of times before seeing the error message only once. It would often not happen at all. At work, I will see the message basically every time I resize the window. Here are the main differences I can think of off the top of my head: 1) RHEL version 4 at work, Unbuntu (8.04) at home 2) Compile my own version of R at work from source, use the Ubuntu R packages at home, http://cran.r-project.org/bin/linux/ubuntu/ 3) Cairo support not enabled at work, it is enabled at home. If anyone else can replicate this, that would be great. Otherwise, I am going to try a few more tests tomorrow at work, and will reply with the results. Best, Erik Iverson Erik Iverson wrote:> Dear R-devel / Dr. Murrell - > > This is similar but ultimately unrelated (I think) to something I posted > about in February. See my original post here: > > https://stat.ethz.ch/pipermail/r-devel/2008-February/048278.html > > I start R with the --vanilla option, and run the following code. > > ## BEGIN SAMPLE R CODE > > library(grid) > for(i in seq(0, 1, by = .1)) { > for(j in seq(0, 1, by = .1)) { > angle <- runif(1, 1, 180) > col <- sample(colors(), 1) > pushViewport(viewport(x = i, y= j, width = .1, height = .1, > angle = angle, gp = gpar(col = col))) > grid.rect() > popViewport() > } > } > > ## END SAMPLE R CODE > > I can then resize the resulting R Graphics Device window and everything > seems to work fine. > > If I then do issue 'library(tcltk)', and reissue the above code, and > then resize the resulting window to something fairly small, I get the > following error that shows up at my R prompt: > > Error: Cannot pop the top-level viewport (grid and graphics output mixed?) > > The error seems harmless, but eventually, after doing this "enough", and > closing the graphics window, R may segfault, > > *** caught segfault *** > address 0xfc, cause 'memory not mapped' > > Possible actions: > 1: abort (with core dump, if enabled) > 2: normal R exit > 3: exit R without saving workspace > 4: exit R saving workspace > > I have tracked down the error message I am receiving with some very > rudimentary techniques, and narrowed it down to the L_unsetviewport > function defined in grid.c. The error string in question appears two > places in that function, and I determined in my case that it is the > first instance that is actually outputting the error. That's about as > far as I can take it unfortunately. > > Again, this only seems to happen after I load the tcltk package. > > I am running RHEL version 4 with KDE on a 32-bit Intel processor. > > Here is my session info, immediately after starting R... > > sessionInfo() > R version 2.7.0 (2008-04-22) > i686-pc-linux-gnu > > locale: > LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C > > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > > Thanks, > Erik Iverson > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
Erik Iverson
2008-May-23 17:00 UTC
[Rd] grid error message when resizing graphics window after tcltk loaded
One more follow-up here before I head out for the weekend. I added a PrintValue(gvp); immediately after the gvp = ... around line 647 in grid.c in function L_unsetviewport. Then I recompile R, and run the code loop below, and resize the window, very small, then large, repeated) until I see the offending error message. I obviously am getting a long list of thing that look like viewport[GRID.VP.262] while I resize the window, with '262' varying. But eventually, I will see, viewport[ROOT] Error: 11Cannot pop the top-level viewport (grid and graphics output mixed?) I'm a bit in over my head at this point, but maybe this can give someone a clue. If there's anything I can try on this end to further diagnose the problem, please let me know. One more piece of information. At work (on the RHEL4 machine described below), if I have a graphic that takes a 'long time' to draw (e.g., print 100000's of characters using grid.text at random points), I can hit the "close" button on the device window while it is drawing, which will almost always cause a segmentation fault. Contrasted at home (setup described below), I could click the button, but it would not respond to my request to close the window until after it had finished drawing, at which point it would close the graphics window gracefully as expected. Erik Erik Iverson wrote:> Dear R-devel / Dr. Murrell - > > This is similar but ultimately unrelated (I think) to something I posted > about in February. See my original post here: > > https://stat.ethz.ch/pipermail/r-devel/2008-February/048278.html > > I start R with the --vanilla option, and run the following code. > > ## BEGIN SAMPLE R CODE > > library(grid) > for(i in seq(0, 1, by = .1)) { > for(j in seq(0, 1, by = .1)) { > angle <- runif(1, 1, 180) > col <- sample(colors(), 1) > pushViewport(viewport(x = i, y= j, width = .1, height = .1, > angle = angle, gp = gpar(col = col))) > grid.rect() > popViewport() > } > } > > ## END SAMPLE R CODE > > I can then resize the resulting R Graphics Device window and everything > seems to work fine. > > If I then do issue 'library(tcltk)', and reissue the above code, and > then resize the resulting window to something fairly small, I get the > following error that shows up at my R prompt: > > Error: Cannot pop the top-level viewport (grid and graphics output mixed?) > > The error seems harmless, but eventually, after doing this "enough", and > closing the graphics window, R may segfault, > > *** caught segfault *** > address 0xfc, cause 'memory not mapped' > > Possible actions: > 1: abort (with core dump, if enabled) > 2: normal R exit > 3: exit R without saving workspace > 4: exit R saving workspace > > I have tracked down the error message I am receiving with some very > rudimentary techniques, and narrowed it down to the L_unsetviewport > function defined in grid.c. The error string in question appears two > places in that function, and I determined in my case that it is the > first instance that is actually outputting the error. That's about as > far as I can take it unfortunately. > > Again, this only seems to happen after I load the tcltk package. > > I am running RHEL version 4 with KDE on a 32-bit Intel processor. > > Here is my session info, immediately after starting R... > > sessionInfo() > R version 2.7.0 (2008-04-22) > i686-pc-linux-gnu > > locale: > LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C > > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > > Thanks, > Erik Iverson > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel