Plots Broken on MacOS Ventura

I just upgraded to MacOS Ventura (13.0), and now, when I try to do a basic plot, e.g., with

using Plots
xvals = LinRange(0, 1, 100)
f(x) = x^2
plot(xvals, f.(xvals))

I get the following error:

Error showing value of type Plots.Plot{Plots.GRBackend}:
ERROR: SystemError: opening file "/var/folders/1d/xcpc4m2d0c7_b8jv3tx1xzfr0000gn/T/jl_DGjsRSTitM.svg": No such file or directory
Stacktrace:
  [1] systemerror(p::String, errno::Int32; extrainfo::Nothing)
    @ Base ./error.jl:176
  [2] #systemerror#80
    @ ./error.jl:175 [inlined]
  [3] systemerror
    @ ./error.jl:175 [inlined]
  [4] open(fname::String; lock::Bool, read::Nothing, write::Nothing, create::Nothing, truncate::Nothing, append::Nothing)
    @ Base ./iostream.jl:293
  [5] open
    @ ./iostream.jl:275 [inlined]
  [6] open(f::Base.var"#387#388"{String}, args::String; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Base ./io.jl:382
  [7] open
    @ ./io.jl:381 [inlined]
  [8] read
    @ ./io.jl:462 [inlined]
  [9] _show(io::IOBuffer, #unused#::MIME{Symbol("image/svg+xml")}, plt::Plots.Plot{Plots.GRBackend})
    @ Plots ~/.julia/packages/Plots/fw4rv/src/backends/gr.jl:2195
 [10] #invokelatest#2
    @ ./essentials.jl:729 [inlined]
 [11] invokelatest
    @ ./essentials.jl:726 [inlined]
 [12] show
    @ ~/.julia/packages/Plots/fw4rv/src/output.jl:227 [inlined]
 [13] __binrepr(m::MIME{Symbol("image/svg+xml")}, x::Plots.Plot{Plots.GRBackend}, context::Nothing)
    @ Base.Multimedia ./multimedia.jl:159
 [14] display(d::VSCodeServer.InlineDisplay, m::MIME{Symbol("image/svg+xml")}, x::Plots.Plot{Plots.GRBackend})
    @ VSCodeServer ./strings/string.jl:0
 [15] display(d::VSCodeServer.InlineDisplay, mime::String, x::Any)
    @ Base.Multimedia ./multimedia.jl:216
 [16] display(d::VSCodeServer.InlineDisplay, x::Plots.Plot{Plots.GRBackend})
    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.38.2/scripts/packages/VSCodeServer/src/display.jl:165
 [17] display(x::Any)
    @ Base.Multimedia ./multimedia.jl:328
 [18] #invokelatest#2
    @ ./essentials.jl:729 [inlined]
 [19] invokelatest
    @ ./essentials.jl:726 [inlined]
 [20] print_response(errio::IO, response::Any, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
    @ REPL /usr/local/Cellar/julia/1.8.2/share/julia/stdlib/v1.8/REPL/src/REPL.jl:296
 [21] (::REPL.var"#45#46"{REPL.LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
    @ REPL /usr/local/Cellar/julia/1.8.2/share/julia/stdlib/v1.8/REPL/src/REPL.jl:278
 [22] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
    @ REPL /usr/local/Cellar/julia/1.8.2/share/julia/stdlib/v1.8/REPL/src/REPL.jl:521
 [23] print_response(repl::REPL.AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
    @ REPL /usr/local/Cellar/julia/1.8.2/share/julia/stdlib/v1.8/REPL/src/REPL.jl:276
 [24] (::REPL.var"#do_respond#66"{Bool, Bool, REPL.var"#77#87"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
    @ REPL /usr/local/Cellar/julia/1.8.2/share/julia/stdlib/v1.8/REPL/src/REPL.jl:857
 [25] (::VSCodeServer.var"#98#101"{REPL.var"#do_respond#66"{Bool, Bool, REPL.var"#77#87"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt}})(mi::REPL.LineEdit.MIState, buf::IOBuffer, ok::Bool)
    @ VSCodeServer ~/.vscode/extensions/julialang.language-julia-1.38.2/scripts/packages/VSCodeServer/src/repl.jl:122
 [26] #invokelatest#2
    @ ./essentials.jl:729 [inlined]
 [27] invokelatest
    @ ./essentials.jl:726 [inlined]
 [28] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
    @ REPL.LineEdit /usr/local/Cellar/julia/1.8.2/share/julia/stdlib/v1.8/REPL/src/LineEdit.jl:2510
 [29] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
    @ REPL /usr/local/Cellar/julia/1.8.2/share/julia/stdlib/v1.8/REPL/src/REPL.jl:1248
 [30] (::REPL.var"#49#54"{REPL.LineEditREPL, REPL.REPLBackendRef})()
    @ REPL ./task.jl:484

I have tried removing and adding back Plots, and adding Plots in a new environment by itself, but to no avail. Is anybody experiencing the same issue, or know how to fix this? Thanks!

Is there a Full Disk Access entry or related issue?

image

(I’d check, but my computer is too old and I can’t upgrade any more…:grinning: That image is from pre-Ventura system,)

There is no app for Julia in the list… I tried allowing Terminal and VSCode access and still the error persists. I had also tried uninstalling and reinstalling Julia entirely and Plots won’t compile because of this missing file error… The only thing I can think of is that it has to be because of the upgrade to Ventura, and maybe the way the files are organized is different?

I remember this was an issue before:

But perhaps this is some new Apple restriction… :scream::anguished:

I have tried everything I can think of at this point… it appears that GLMakie and CairoMakie are compiling just fine, so I’ll take the opportunity to learn another plotting package in hopes that Plots can somehow be fixed to be compatible with MacOS Ventura…

I do worry that this might degrade other parts of my workflow, e.g., where packages like DifferentialEquations have easy-to-use plotting recipes through Plots that may not be accessible until a fix is found.

I also have the problem where Plots won’t compile after upgrading to Ventura. I have a different error though:

GKS: dlopen(/workspace/destdir/lib/cairoplugin.so, 0x0001): tried: '/workspace/destdir/lib/cairoplugin.so' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/workspace/destdir/lib/cairoplugin.so' (no such file), '/workspace/destdir/lib/cairoplugin.so' (no such file)
ERROR: LoadError: SystemError: opening file "/var/folders/f9/8kgfncl13lz1l9jxrjjqdcwh0000gn/T/jl_PcVch6vaL0.png": No such file or directory

I cannot reproduce the problem on Ventura (MacBook Air M2). A plot is produced without any problem.

Are you on an Intel or Apple Silicon Mac? I’m curious is maybe this is a Ventura + Intel Mac issue?

M1 Mac, Julia 1.8.2 from homebrew.

Interesting, maybe it’s a homebrew issue? I am also downloading 1.8.2 from homebrew. @zdenek_hurak, do you use homebrew or something else?

I did not use homebrew. I directly installed Julia downloaded from Julia web page.

Ah, that’s good to know! Maybe that’s the issue. I will try that later tonight and see if that fixes things.

1 Like

Leave a message here then.

I just downloaded the .dmg directly from Download Julia and Plots precompiled + plotted with no problem. I think I’ll chalk it up to homebrew for now.

2 Likes

Yes, I can confirm that also on my machine deleting Julia and doing a fresh install directly from the Julia website fixed the problem. Thanks for the help, @zdenek_hurak and @rowanxshi !

2 Likes

Plots issue, [BUG] Plots are not available on OSX (Ventura). · Issue #4478 · JuliaPlots/Plots.jl · GitHub.
Related: [libcleri] dlopen could not load library on macOS Ventura · Issue #5771 · JuliaPackaging/Yggdrasil · GitHub.

There is a long discussion on slack about this, dyld seems to have changed behavior (reproducer by @gbaraldi here: GitHub - gbaraldi/LinkerFailures).

2 Likes

I upgraded Julia today from within Julia from 1.7 to 1.8.2:

using UpdateJulia
update_julia()

But had to do the final linking manually outside of Julia in the bash terminal (the whole thing is so annoying, of course cannot be linked without sudo):

/dev/disk4 GUID_partition_scheme
/dev/disk4s1 EFI
/dev/disk4s2 Apple_HFS /Volumes/Julia-1.8.2
“disk4” ejected.
ln: /usr/local/bin/julia: Permission denied
ERROR: failed process: Process(ln -sf /Applications/Julia-1.8.2.app/Contents/Resources/julia/bin/julia /usr/local/bin/julia, ProcessExited(1)) [1]

But in any case I am also on Ventura 13.0 on a M1 Macbook and your plot example would work.

But the broken pipe bug still hasn’t been solved when you want to plot it for a second time:

send: Broken pipe

And then people wonder why Julia doesn’t gain traction in the real world.

It is those little pesky things that annoy people the most.

I have the same problem in julia v1.8.3 that installed by homebrew. I solved the problem by using cask julia instead of formulae julia.