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.