Skip to content

“Failed to clean up temporary path” on exit #60078

@essandess

Description

@essandess

I’m the julia maintainer for MacPorts.

Version 1.12.1 throws the error below on exit, and goes into an infinite loop that I’m unable to kill unless I delete the binary (!). This is on a macOS 25 arm64 box.

The install is compiled from source using a clean make && make install sequence.

$ julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.12.1 (2025-10-17)
 _/ |\__'_|_|_|\__'_|  |  
|__/                   |

julia> exit()
┌ Warning: Failed to clean up temporary path "/var/folders/m2/s6bxgv5n50x9d1859htljt9r0000gr/T/jl_RkGshu/jl_Er2jyLypIR"
│ Base.IOError("ispath(\"/var/folders/m2/s6bxgv5n50x9d1859htljt9r0000gr/T/jl_RkGshu/jl_Er2jyLypIR\"): permission denied (EACCES)", -13)
└ @ Base.Filesystem file.jl:657
┌ Warning: Failed to clean up temporary path "/var/folders/m2/s6bxgv5n50x9d1859htljt9r0000gr/T/jl_RkGshu/jl_AXSnI1QJG7"
│ Base.IOError("ispath(\"/var/folders/m2/s6bxgv5n50x9d1859htljt9r0000gr/T/jl_RkGshu/jl_AXSnI1QJG7\"): permission denied (EACCES)", -13)
└ @ Base.Filesystem file.jl:657

IOError: could not spawn `/opt/local/bin/julia -C native -J/opt/local/lib/julia/sys.dylib -g1 --startup-file=no --startup-file=no -e "cleanuplist = readlines(stdin) # This loop won't start running until stdin is closed, which is supposed to be sequenced after the process exits
sleep(1) # Wait for the operating system to hopefully be ready, since the OS implementation is probably incorrect, given the history of buggy work-arounds like this that have existed for ages in dotNet and libuv
for path in cleanuplist
    try
        rm(path, force=true, recursive=true)
    catch ex
        @warn \"Failed to clean up temporary path \$(repr(path))
\$ex\" _group=:file
    end
end
"`: no such file or directory (ENOENT)
Stacktrace:
 [1] _spawn_primitive(file::String, cmd::Cmd, stdio::Memory{Union{RawFD, Base.SyncCloseFD, IO}})
   @ Base /opt/local/lib/julia/sys.dylib:-1
 [2] setup_stdios(f::Base.var"#_spawn##0#_spawn##1"{Cmd}, stdios::Vector{Union{RawFD, Base.FileRedirect, IO}})
   @ Base /opt/local/lib/julia/sys.dylib:-1
 [3] run(::Cmd, ::Base.PipeEndpoint, ::Vararg{Any}; wait::Bool)
   @ Base /opt/local/lib/julia/sys.dylib:-1
 [4] temp_cleanup_postprocess(cleanup_dirs::Base.KeySet{String, Dict{String, Bool}})
   @ Base.Filesystem /opt/local/lib/julia/sys.dylib:-1
 [5] temp_cleanup_atexit()
   @ Base.Filesystem /opt/local/lib/julia/sys.dylib:-1
 [6] _atexit(exitcode::Int32)
   @ Base /opt/local/lib/julia/sys.dylib:-1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions