[R-SIG-Mac] [External] Re: more rgl problems

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Sat Feb 20 15:41:12 CET 2021


If you are set up to install from source, could you try this?

   devtools::install_github("dmurdoch/rgl using quartzbug", type="source")

If you only have some of the requirements (e.g. no devel versions of 
packages) you might find you only get a partial build with no X11 
display; that won't really test the workaround.  In that case I'll try 
to build a binary for your R version.

Duncan Murdoch

On 18/02/2021 6:07 p.m., Richard M. Heiberger wrote:
> This is from my MacBook Air mid-2012 running Catalina 10.15.7
> with Xquartz 2.7.11
> I never placed the beta on this machine.
> I also see from a fresh R session
> 
>     plot(1:10, col=7)
>     library(rgl)
>     open3d()
> 
> is fine, whereas this:
> 
>     library(rgl)
>     plot(1:10, col=7)
>     open3d()
> segfaults
> 
> R version 4.0.3 (2020-10-10) -- "Bunny-Wunnies Freak Out"
> Copyright (C) 2020 The R Foundation for Statistical Computing
> Platform: x86_64-apple-darwin17.0 (64-bit)
> 
> R is free software and comes with ABSOLUTELY NO WARRANTY.
> You are welcome to redistribute it under certain conditions.
> Type 'license()' or 'licence()' for distribution details.
> 
>    Natural language support but running in an English locale
> 
> R is a collaborative project with many contributors.
> Type 'contributors()' for more information and
> 'citation()' on how to cite R or R packages in publications.
> 
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for an HTML browser interface to help.
> Type 'q()' to quit R.
> 
>> setwd('/Users/rmh/Rwd/')
>>     library(rgl)
>     plot(1:10, col=7)
>     open3d()
>     library(rgl)
>>     plot(1:10, col=7)
>>     open3d()
> 
> error: xp_attach_gl_context returned: 2
> 
>   *** caught segfault ***
> address 0x18, cause 'memory not mapped'
> 
> Traceback:
>   1: rgl.open(useNULL)
>   2: open3d()
> 
> Possible actions:
> 1: abort (with core dump, if enabled)
> 2: normal R exit
> 3: exit R without saving workspace
> 4: exit R saving workspace
> Selection: 2
> Warning message:
> In rgl.open(useNULL) : RGL: ERROR: can't bind glx context to window
> 
> Process R finished at Thu Feb 18 17:57:37 2021
> 
> 
> ________________________________________
> From: Duncan Murdoch <murdoch.duncan using gmail.com>
> Sent: Thursday, February 18, 2021 3:20 PM
> To: Richard M. Heiberger; r-sig-mac using r-project.org
> Subject: [External] Re: more rgl problems
> 
> I've made some progress on this, but I don't know how to fix it properly.
> 
> What's happening is that rgl is trying to open the new window that
> open3d() asks for.  It gets most of the way through that operation, then
> calls glXMakeCurrent, which associates the OpenGL context with that
> window.  That call fails, but without generating any of the documented
> errors:  it just fails, triggering an X11 error handler with error code
> 0 (which typically means no error).
> 
> In the released versions of rgl, that failure leads to a segfault,
> because I wasn't doing enough error checking.  I've fixed the segfault,
> but I'm still getting the error (in fact I'm getting it a lot more than
> I used to; not sure if it's my debugging code causing that), and after I
> get the error reported on screen, the new rgl window opens but doesn't
> work to display anything.
> 
> I think it's probably something wrong in the rgl initialization code;
> running this:
> 
>     plot(1:10, col=7)
>     library(rgl)
>     open3d()
> 
> is fine, whereas this:
> 
>     library(rgl)
>     plot(1:10, col=7)
>     open3d()
> 
> is always failing for me.  Or possibly this is an Xquartz bug, maybe a
> leftover from when I installed the beta.
> 
> I'd guess what's happening is that calling quartz() invalidates part of
> the initialization done by rgl.init(), but I don't know what part yet.
> I do want to call rgl.init() when loading rgl, because it might fail,
> and then I can drop back to the off-screen drawing.  It's too late to do
> that later.
> 
> A workaround that works for me is for the .onload() function in rgl to
> execute
> 
>    dev.new()
>    dev.off()
> 
> before calling rgl.init(). It is less irritating than you might guess,
> because the window doesn't have time to appear before being destroyed,
> but I still don't like it.   I'll try it out a bit, and then push it to
> Github for others to test.
> 
> Duncan Murdoch
> 
> 
> On 18/02/2021 6:28 a.m., Duncan Murdoch wrote:
>> I can reproduce this on a Catalina machine, working in R from the terminal.
>>
>> This definitely looks similar to the problem that
>> rgl::setGraphicsDelay() was designed to solve, but even adding a 10
>> second delay doesn't help.  I get a slightly different message than you:
>>
>>    > open3d()
>> error: xp_attach_gl_context returned: 2
>>
>>     *** caught segfault ***
>> address 0x18, cause 'memory not mapped'
>>
>> but that might just be a different way of reporting the same underlying
>> issue.
>>
>> It's clearly some kind of interaction between the Quartz device and rgl.
>>     I'll see if I can track it down.
>>
>> Duncan Murdoch
>>
>> On 17/02/2021 7:36 p.m., Richard M. Heiberger wrote:
>>> This is repeatable when the lines are all pasted in at once.
>>> The example works if I allow some time delay between lines.
>>>
>>> This is might be a relative of the one from a few months ago.
>>> But this message is about invalid permissions.
>>> =====
>>>
>>> R version 4.0.4 RC (2021-02-12 r79998) -- "Lost Library Book"
>>> Copyright (C) 2021 The R Foundation for Statistical Computing
>>> Platform: x86_64-apple-darwin17.0 (64-bit)
>>>
>>> R is free software and comes with ABSOLUTELY NO WARRANTY.
>>> You are welcome to redistribute it under certain conditions.
>>> Type 'license()' or 'licence()' for distribution details.
>>>
>>>      Natural language support but running in an English locale
>>>
>>> R is a collaborative project with many contributors.
>>> Type 'contributors()' for more information and
>>> 'citation()' on how to cite R or R packages in publications.
>>>
>>> Type 'demo()' for some demos, 'help()' for on-line help, or
>>> 'help.start()' for an HTML browser interface to help.
>>> Type 'q()' to quit R.
>>>
>>>> setwd('/Users/rmh/Rwd/')
>>>> library(rgl)
>>>> x <- matrix(1:3, 1,3)
>>>> plot(1:10, col=7)
>>>> open3d()
>>> error: xp_attach_gl_context returned: 2
>>>
>>>     *** caught segfault ***
>>> address 0x18, cause 'invalid permissions'
>>>
>>> Traceback:
>>>     1: rgl.open(useNULL)
>>>     2: open3d()
>>>
>>> Possible actions:
>>> 1: abort (with core dump, if enabled)
>>> 2: normal R exit
>>> 3: exit R without saving workspace
>>> 4: exit R saving workspace
>>> Selection:
>>>
>>>
>>> ====
>>> MacBookAir with the M1 chip using the regular intel version of R from CRAN.
>>> Big Sur 11.2.1.
>>> The plot(1:10), col=7) ## went by default to the quartz() device.
>>>
>>>
>>> I repeated this about 5 times in ESS, and then once in Terminal.
>>>
>>> Let me know if you need more information.
>>>
>>
>



More information about the R-SIG-Mac mailing list