On 6/18/2007 7:56 AM, Hin-Tak Leung wrote: > Prof Brian Ripley wrote: >> rgl normally works under Xvfb on Linux: we've been using that for the >> testing 'for ever'. >> >> However R should not 'crash' on an error in a package, and the X11 device >> has error handlers set up by >> >> XSetErrorHandler(R_X11Err); >> XSetIOErrorHandler(R_X11IOErr); >> >> I don't see anything comparable in rgl. >> >> The error seems to be in the attributes, so I would have a closer look at >> those. In particular, how are you running Xvfb?: you may need something >> like >> >> Xvfb :5 -screen 0 1280x1024x24 & >> setenv DISPLAY :5 >> >> to ensure that you have a reasonable visual and hence colormap. >> (On my system the default is 12 bit.) > > That's interesting - my first thought of Duncan's problem was unusual > colour depth as well, but I thought very few people run their X servers > in anything other than 24-bit or true-color mode these days (and any > MacOSX hardware should be capable of that anyway); if 12-bit is the > Xvfb default it is hightly likely that's the reason.
I don't know the default, but I've been specifying 24 or 32 bit depth each time, and rgl is seeing 32 bit depth. > I have also seen that sort of error messages in CJK related issues, > if the X server's font path has some unsual and broken fonts; so it > might be a good idea to disable any non-english locale, etc and try not > to do anything clever in that direction for the time being. I do get a warning about a missing font when I run Xvfb; Simon Urbanek thought it was ignorable, but maybe not: Could not init font path element /usr/X11R6/lib/X11/fonts/CID/ This happens before R is running, and sometimes again during the run. I've now implemented XSetErrorHandler(R_X11Err) as Brian suggested, and this moves the error elsewhere: R doesn't quit when it hits that error, but it dies later because rgl isn't handling its incomplete initialization properly. I think that will be relatively easy to track down and fix, but I'm still left with two problems I don't know how to solve: 1. Why am I getting this error in the first place? Since things work on Linux, this may be a bug in the MacOSX implementation of Xvfb, but Google doesn't turn up other reports of that, so it's more likely an rgl problem. 2. XSetErrorHandler() is a global setting. If rgl sets it, then it will override the setting that X11() used. Is there a way to retrieve the previous setting, so I can set it only temporarily? There doesn't appear to be any XGetErrorHandler() function. Duncan Murdoch > > - I do run my old laptop at 16-bit only, as it is old and I get better > performance that way with little sacrifice on visual appearance, > but that's my choice... > >> On Sun, 17 Jun 2007, Duncan Murdoch wrote: >> >>> The rgl package currently crashes R when running under Xvfb (the >>> "virtual frame buffer" server), at least on MacOSX. It makes sense that >>> it shouldn't be able to work there (it needs interactivity), but I don't >>> know how to detect the problems before they cause the crash. >>> >>> Currently the error happens the first time you try to open an rgl >>> window; when rgl calls XCreateWindow R crashes with the error message >>> >>> X Error of failed request: BadMatch (invalid parameter attributes) >>> Major opcode of failed request: 1 (X_CreateWindow) >>> Serial number of failed request: 28 >>> Current serial number in output stream: 29 >>> >>> I've checked and as far as I can see all the parameters we're sending to >>> XCreateWindow are valid, but I might have missed something: I don't >>> know much about X11 programming. (The call is >>> >>> ::Window xwindow = XCreateWindow( >>> xdisplay, RootWindow(xdisplay, DefaultScreen(xdisplay)), >>> 0, 0, 256, 256, 0, >>> xvisualinfo->depth, >>> InputOutput, >>> xvisualinfo->visual, >>> valuemask, >>> &attrib >>> ); >>> >>> but without context that's probably not worth much to others.) >>> >>> >>> Are there any experienced X11 programmers out there who can suggest what >>> to do next? >>> >>> Duncan Murdoch >>> >>> ______________________________________________ >>> 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