[R-SIG-Mac] quartz hanging

biii+rsigm@c m@iii@g oii 8p@wexpress@com biii+rsigm@c m@iii@g oii 8p@wexpress@com
Fri Jul 4 04:55:43 CEST 2025


Okay, it took me a while, but I now have a very small reprex for quartz 
(not xquartz) failing. I cannot repro this on linux with R-4.4.3 and the 
same package versions.

This is using emacs/ess, though it behaves the same on the console. I do 
not have RStudio installed.

|R.version # _ # platform aarch64-apple-darwin20 # arch aarch64 # os 
darwin20 # system aarch64, darwin20 # status # major 4 # minor 4.3 # 
year 2025 # month 02 # day 28 # svn rev 87843 # language R # 
version.string R version 4.4.3 (2025-02-28) # nickname Trophy Case 
Sys.info()[c("release","version")] # release # "24.5.0" # version # 
"Darwin Kernel Version 24.5.0: Tue Apr 22 19:53:27 PDT 2025; 
root:xnu-11417.121.6~2/RELEASE_ARM64_T6041" plot(1:10) |

(This can also be reproduced using |ggplot(mtcars, aes(mpg, disp)) + 
geom_point()|.)

At this point, change to the quartz window, it looks fine. Press |cmd-p| 
and a print dialog comes up, normal. Escape out. Press |cmd-p| again, 
and a bunch of rows dump all at once:

|2025-07-03 22:12:31.320 R[85631:98913917] The behavior of the 
UICollectionViewFlowLayout is not defined because: 2025-07-03 
22:12:31.320 R[85631:98913917] the item width must be less than the 
width of the UICollectionView minus the section insets left and right 
values, minus the content insets left and right values. 2025-07-03 
22:12:31.320 R[85631:98913917] The relevant UICollectionViewFlowLayout 
instance is <NSCollectionViewFlowLayout: 0x15b623740>, and it is 
attached to <NSCollectionView: 0x15b623000>. 2025-07-03 22:12:31.320 
R[85631:98913917] Make a symbolic breakpoint at 
UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the 
debugger. 2025-07-03 22:12:31.322 R[85631:98913917] The behavior of the 
UICollectionViewFlowLayout is not defined because: 2025-07-03 
22:12:31.322 R[85631:98913917] the item width must be less than the 
width of the UICollectionView minus the section insets left and right 
values, minus the content insets left and right values. 2025-07-03 
22:12:31.322 R[85631:98913917] The relevant UICollectionViewFlowLayout 
instance is <NSCollectionViewFlowLayout: 0x15b623740>, and it is 
attached to <NSCollectionView: 0x15b623000>. 2025-07-03 22:12:31.322 
R[85631:98913917] Make a symbolic breakpoint at 
UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the 
debugger. 2025-07-03 22:12:31.324 R[85631:98913917] The behavior of the 
UICollectionViewFlowLayout is not defined because: 2025-07-03 
22:12:31.324 R[85631:98913917] the item width must be less than the 
width of the UICollectionView minus the section insets left and right 
values, minus the content insets left and right values. 2025-07-03 
22:12:31.324 R[85631:98913917] The relevant UICollectionViewFlowLayout 
instance is <NSCollectionViewFlowLayout: 0x15b623740>, and it is 
attached to <NSCollectionView: 0x15b623000>. 2025-07-03 22:12:31.324 
R[85631:98913917] Make a symbolic breakpoint at 
UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the 
debugger. |

(Repeating the |cmd-p| for the above messages is not required, it’s just 
an oh-by-the-way. Not sure why it’s complaining, and I don’t entirely 
understand what the messages are really saying. But since it’s neither a 
warning nor a device-breaking error, I have been ignoring them.)

Now, load |kableExtra|. I haven’t tried many other packages, so far it 
is just this one package.

|library(kableExtra) |

That’s all, no more code/expressions/evaluation required. Back to the 
quartz window and press again |cmd-p|, and on the R console one of these 
errors appears. I say “one of” because it varies slightly based on base 
graphics or ggplot2, or CRAN-vs-P3M ggplot2. Since the message-component 
is the same, I believe it to be the same underlying problem.

|### with base graphics alone, I see this: Error in 
getNamespace("grDevices") : Start tag expected, '<' not found [4] ### 
using ggplot2 from P3M, this is the only message I see Error in 
diff.default(xscale) : Start tag expected, '<' not found [4] ### using 
ggplot2 from CRAN, I see the p3m-error above or one of these two Error 
in length(x) : Start tag expected, '<' not found [4] Error in is.unit(y) 
: Start tag expected, '<' not found [4] |

The quartz window for that R process is now unresponsive, R will plot 
nothing more, and R will not open a new quartz window. I can |dev.off() 
; dev.list()| and it suggests there are no windows, but the window is 
still present and unresponsive. |dev.new()| does nothing. Additional 
plot expressions (base or grid) do nothing, no error or warning, no 
rendering.

Interestingly, when I do this with base graphics, the print dialog 
remains up and is now unresponsive. (Does it matter that it says “no 
printer found”?) When I repro this using |ggplot2|, the print dialog 
does go away when the error hits, suggesting it is slightly later in 
code execution?

Variations attempted:

  * R is just the default R installer, I have not compiled it or any of
    its components manually;
  * base graphics vs |ggplot2| grid, barely-different behavior, same failure
  * |ggplot2_3.5.2| installed from CRAN (source) and from p3m.dev (mac
    binary), same behavior
  * |kableExtra_1.4.0| installed from p3m.dev, and
    |remotes::install_github("haozhu233/kableExtra")| installed
    |1.4.0.15|, same behavior
  * R from the shell and R from emacs/ess
  * I tried |library(kableExtra); detach("package:kableExtra",
    unload=TRUE)| (no attempt to print) and it still erred/broke
  * though I think it was a red-herring, I have uninstalled XQuartz, no
    change
  * this has been in multiple versions of R-4.4, not just 4.4.3, and not
    just one download/install; I have not yet tried R-4.5
  * XCode updated itself to 16.2 (I don’t recall upgrading it), though I
    would not expect this to be an issue if I compiled neither R nor the
    packages using its compilers; I’m happy to be wrong here!

I do not think that the two packages have any collisions, 
|intersect(ls(getNamespace("ggplot2")), ls(getNamespace("kableExtra")))| 
yields nothing in common. But since this repros with base graphics 
without |ggplot2| loaded, that’s a non-player anyway.

I’m hoping someone here can help with a couple requests/questions:

  * can anyone else repro this on their machine, or is it just me?
  * any ideas of what I might try to recompile, reinstall, or otherwise
    debug or deep-dive to see if there are any clear markers of what is
    causing the error?

Thanks!
Bill

On 6/2/25 17:28, Kasper Daniel Hansen wrote:

> I have been using quartz from inside Emacs for a long time and I 
> basically never (or at least very rarely) have any issues. I rarely 
> use XQuartz and never with R installed on my local machine (mostly to 
> start X windows from a remote server). There is a way to configure the 
> default device in R, so I would try to start the quartz device 
> manually with
>   R> quartz()
>   R> plot(1:10)
> and check that is the same as
>   R> plot(1:10)
> to rule out any configuration issues and make sure we're talking about 
> the same device.
>
> Are you compiling R from source or are you using the CRAN binaries? 
> That might have an impact.
>
> Best,
> Kasper
>
>
>
> On Sun, Jun 1, 2025 at 8:26 AM <bill+rsigmac using 8pawexpress.com 
> <mailto:bill%2Brsigmac using 8pawexpress.com>> wrote:
>
>     Thank you, Peter. I think that’s a misunderstanding of mine based on
>     mis-reading mac.r-project.org <http://mac.r-project.org> and
>     incomplete research. I have since
>     uninstalled XQuartz and indeed |quartz()| still works, so my
>     bug-report
>     has been a misdirection. With this, I’ve changed the here from
>     “xquartz
>     hanging” to “quartz hanging”.
>
>     I’m still working on a reprex, haven’t found the culprit yet. (I
>     haven’t
>     had a repeat since I uninstalled and reinstalled then uninstalled
>     XQuartz.)
>
>     Thank you again,
>     Bill
>
>     On 6/1/25 07:24, peter dalgaard wrote:
>
>     > I'm puzzled why you need XQuartz in the first place. R in a
>     terminal usually fires up the quartz() graphics device and that
>     has nothing to do with XQuartz (which is X on top of Quartz, not
>     the other way around).
>     >
>     > We do have an annoyance with XQuartz though: When
>     install.packages() goes looking for a CRAN mirror (*), it fires up
>     a Tk selector and that will require XQuartz to fire up. Every now
>     and again that hangs for me too, but as it is usually the first
>     thing I do in an R session, I can ctr-Z and kill the process and
>     start over. But it really could do with a looking into. (I do miss
>     strace/truss from days of yore, where you could just probe into a
>     running process and see what it is up to.)
>     >
>     > -pd
>     >
>     > (*) Yeah, I know, it should be in a configuration file ...
>     somewhere.
>     >
>     >> On 1 Jun 2025, at 00.08,bill+rsigmac using 8pawexpress.com
>     <mailto:bill%2Brsigmac using 8pawexpress.com> wrote:
>     >>
>     >> Thanks for the feedback, Marc! Very interesting.
>     >>
>     >> On 5/31/25 13:04, Marc Schwartz wrote:
>     >>
>     >>> Hi,
>     >>>
>     >>> I am currently running R 4.5.0 on macOS 15.5 (Sequoia), and I
>     also use emacs (30.1) and ess (25.1.0), the latter from elpa,
>     along with other emacs packages.
>     >> It seems we (emacs/ess users) are a diminishing crowd :-(
>     >>> I do not have the issue that you are referring to below, and
>     did not under prior versions to the best of my recollection.
>     >> Then there’s hope :-)
>     >>> I do tend to stay up to date on the versions of all of the
>     above and do clean installs of R and packages with each new
>     version, fully removing the older version file tree first
>     (/Library/Frameworks/R.framework).
>     >>>
>     >>> Thus, you might consider updating both macOS and R to current
>     versions.
>     >> I had already planned to upgrade to macos-15.5. I’m not able to
>     >> upgrade (fully) to R-4.5 in the immediate future … worse, I need
>     >> to have multiple R versions on-hand for some
>     backwards-compatibility
>     >> testing (work apps/apis).
>     >>
>     >> I do subscribe occasionally to the “three-finger salute” way of
>     >> fixing some OS or program issues, but I really dislike the fact
>     that
>     >> it works much more frequently than I think it should.
>     >>
>     >>> I don't use ggplot*, so cannot comment if there may be
>     something specific to that package causing any issues,
>     >> |ggplot2| does tend to be more complex and test the graphics device
>     >> more than typical base graphics; I recall an issue with ggplot on
>     >> windows several years ago that caused the window to dump,
>     >> occasionally causing R to dump and crash as well, triggered by a
>     >> mouse-wheel action on a ggplot graphics pane. This is not the same
>     >> issue, certainly, but speaks to the difference with base graphics.
>     >>
>     >> For the record, while I use it much much less frequently, I
>     have yet
>     >> to see the issue appear when a base-graphics plot is displayed.
>     This
>     >> is not conclusive.
>     >>
>     >>> One thing that you should do, if you have not, is to be sure
>     to re-install XQuartz after upgrading R versions, and this is
>     referenced on the R macOS CRAN page.
>     >> The only mentions I can find of XQuartz on the R-Mac pages are:
>     >>
>     >>   * Big Sur and newer require XQuartz 2.8.5 (I’m good,
>     installed 2.8.5
>     >>     from the start)
>     >>   * “Always re-install XQuartz when upgrading your macOS to a new
>     >>     major version”: not applicable, I’ve been on 15.3 or newer
>     on this
>     >>     laptop (unless … is 15.4 a “major version” over 15.3?)
>     >>
>     >> Regardless of that, I don’t understand how an xorg-server would be
>     >> at all tied to (needing to be reinstalled/relinked after)
>     changes in
>     >> a client library (R plotting services). Can you provide more
>     >> information (a link) where they say XQuartz needs to be reinstalled
>     >> with each R upgrade? I apologize if I’m missing it on
>     mac.r-project.org <http://mac.r-project.org>.
>     >>
>     >>> See if re-installing XQuartz has any impact on the issues that
>     you are observing.
>     >> Regardless of “why” it may work, I think I’m going to uninstall and
>     >> reinstall XQuartz when I do the macos upgrade. “It can’t hurt”,
>     >> famous last words.
>     >>> You might also want to fully uninstall XQuartz first, before
>     re-installing it, and the instructions for that are available on
>     their FAQ page:
>     >>>
>     >>> https://www.xquartz.org/FAQs.html
>     >> Sage advice, I appreciate it.
>     >>> One additional thing to consider is to try to replicate the
>     behavior that you are observing by running R in Terminal and/or
>     via R.app, to try to exclude the possibility that there is
>     something going on with your emacs/ess installation.
>     >> That’s been on my list, but since I still don’t know exactly what
>     >> causes it to hang, I have not spent the time trying to repeat it
>     >> from outside of my normal R use.
>     >>
>     >> Once thing I find interesting is that it is particular to one R
>     >> process, but not to XQuartz. That is, when one R process’ graphics
>     >> device is hung, I can open a new R process and plotting works
>     >> without issue. I can close the first process, eventually its hung
>     >> window closes, and other processes continue to plot without
>     issue. I
>     >> don’t know if this narrows it down at all, since a bug in either R
>     >> or XQuartz could show that specificity. (The major pain is that
>     >> often I’m working with many GBs of data, and reloading and
>     >> reprocessing is a not-free chore. Usually not impossible, just many
>     >> many minutes and reacquiring my mental focus.)
>     >>
>     >> Thanks again for your experience, Marc!
>     >>
>     >>> If you can replicate the issues in Terminal and/or R.app, that
>     would help to exclude emacs/ess from involvement at least. If you
>     cannot, then you might be sure that you are running the latest
>     versions of emacs and ess to see if that helps, in case they are
>     adding a source of conflict.
>     >>>
>     >>> Regards,
>     >>>
>     >>> Marc Schwartz
>     >>>
>     >>>
>     >>>> On May 31, 2025, at 10:35 AM,bill+rsigmac using 8pawexpress.com
>     <mailto:bill%2Brsigmac using 8pawexpress.com> wrote:
>     >>>>
>     >>>> Are there easy fixes or alternatives to using XQuartz for R
>     plots?
>     >>>>
>     >>>> I’m running R-4.4.3 (emacs/ess) on macos 15.4.1 and have
>     xquartz-2.8.5
>     >>>> installed. Most of the time plotting in R works well enough
>     (I tend to
>     >>>> use ggplot2, I don’t know if it happens as often with base
>     plots).
>     >>>> Occasionally (several times a week), “something” happens with
>     the plot
>     >>>> window, and from then on that R process can no longer plot
>     anything
>     >>>> more. The “something” is not well defined for me yet, I think
>     it’s a
>     >>>> mouse-wheel or mouse-click or similar; the snark in me says
>     “well don’t
>     >>>> do that”, but I cannot nail down exactly how/when it breaks,
>     it just does.
>     >>>>
>     >>>> When it happens, the current device window is still open, but
>     it has a
>     >>>> mac spinning-colorwheel, no new plotting commands work, and I
>     cannot
>     >>>> close the window myself. I cannot dev.off() it, nor does
>     dev.new <http://dev.new>() give
>     >>>> me a new plotting window. When this happens for a particular
>     R process,
>     >>>> my only options for plotting are either (a) close the R
>     process and
>     >>>> start over, or (b) manually plot to a PDF or similar one-shot
>     graphics
>     >>>> device, viewing in a different app.
>     >>>>
>     >>>> There are several related issues I can find:
>     >>>>
>     >>>> https://github.com/XQuartz/XQuartz/issues/431, specific to
>     macos 15.4 or
>     >>>> newer I think; some mention of “minimizing windows” but I
>     don’t minimize
>     >>>> my plot windows, so perhaps not that
>     >>>> https://github.com/XQuartz/XQuartz/issues/168, closed as “not
>     planned”,
>     >>>> though this one is much older than the first (431) issue
>     >>>>
>     >>>> I’ve tried using something like |httpgd|
>     >>>> <https://github.com/nx10/httpgd/> since it can (mostly)
>     provide an
>     >>>> “always updating graphics device” for example without xquartz.
>     >>>> Unfortunately, with some other packages (namely plumber that
>     I use
>     >>>> frequently-enough) it can put the R’s REPL into an
>     unbreakable state
>     >>>> (#215<https://github.com/nx10/httpgd/issues/215>). If that
>     were fixed
>     >>>> I’d be a lot more comfortable using that as my workaround.
>     >>>>
>     >>>> My research has not shown any other options for fixing or
>     replacing
>     >>>> xquartz with a more stable solution. Are there good ways to
>     troubleshoot
>     >>>> and try to fix the xquartz issue? Does anybody else have a
>     workaround or
>     >>>> alternative that is less unwieldy than pdf(..); plot(..);
>     dev.off()?
>     >>>>
>     >>>> Thanks,
>     >>>> Bill
>     >>>>
>     >>>> ​
>     >>>> ​
>     >>>> [[alternative HTML version deleted]]
>     >>>>
>     >>>> _______________________________________________
>     >>>> R-SIG-Mac mailing list
>     >>>> R-SIG-Mac using r-project.org
>     >>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>     >> ​
>     >> [[alternative HTML version deleted]]
>     >>
>     >> _______________________________________________
>     >> R-SIG-Mac mailing list
>     >> R-SIG-Mac using r-project.org
>     >> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>             [[alternative HTML version deleted]]
>
>     _______________________________________________
>     R-SIG-Mac mailing list
>     R-SIG-Mac using r-project.org
>     https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>
>
>
> -- 
> Best,
> Kasper
​
	[[alternative HTML version deleted]]



More information about the R-SIG-Mac mailing list