Skip to content

Ctrl-C on "Install package?" prompt now exits Julia #58105

Open
@adienes

Description

@adienes

this is not specific to any package. on 1.11 and 1.12 this is only a normal exception but does not exit the Julia session, so it regressed some time in 1.13

if I were to throw a hunch out it'd probably be #57087, but I didn't test

julia> using OffsetArrays
 │ Package OffsetArrays not found, but a package named OffsetArrays is available
 │ from a registry. 
 │ Install package?
 │   (@v1.13) pkg> add OffsetArrays 
 └ (y/n/o) [y]: ^C
ERROR: ArgumentError: Package OffsetArrays not found in current path.
- Run `import Pkg; Pkg.add("OffsetArrays")` to install the OffsetArrays package.
Stacktrace:
 [1] macro expansion
   @ ./loading.jl:2416 [inlined]
 [2] macro expansion
   @ ./lock.jl:376 [inlined]
 [3] __require(into::Module, mod::Symbol)
   @ Base ./loading.jl:2399
 [4] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:2375
 [5] top-level scope
   @ REPL[1]:1

julia> Unhandled Task ERROR: TaskFailedException
Stacktrace:
 [1] #wait#583
   @ ./task.jl:363 [inlined]
 [2] wait
   @ ./task.jl:360 [inlined]
 [3] fetch
   @ ./task.jl:525 [inlined]
 [4] prompt!(term::REPL.Terminals.TextTerminal, prompt::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
   @ REPL.LineEdit ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/LineEdit.jl:2981
 [5] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
   @ REPL.LineEdit ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/LineEdit.jl:2847
 [6] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
   @ REPL ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/REPL.jl:1657
 [7] (::REPL.var"#61#62"{REPL.LineEditREPL, REPL.REPLBackendRef})()
   @ REPL ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/REPL.jl:648

    nested task error: InterruptException:
    Stacktrace:
     [1] yieldto(t::Task, x::Any)
       @ Base ./task.jl:1101
     [2] yieldto
       @ ./task.jl:1095 [inlined]
     [3] wait()
       @ Base ./task.jl:1213
     [4] wait(c::Base.GenericCondition{Base.Threads.SpinLock}; first::Bool)
       @ Base ./condition.jl:141
     [5] wait
       @ ./condition.jl:136 [inlined]
     [6] wait_readnb(x::Base.TTY, nb::Int64)
       @ Base ./stream.jl:416
     [7] eof(s::Base.TTY)
       @ Base ./stream.jl:106
     [8] eof(io::REPL.Terminals.TTYTerminal)
       @ Base ./io.jl:472
     [9] (::REPL.LineEdit.var"#prompt!##2#prompt!##3"{REPL.Terminals.TTYTerminal, REPL.LineEdit.ModalInterface, REPL.LineEdit.MIState, REPL.LineEdit.Prompt})()
       @ REPL.LineEdit ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/LineEdit.jl:2946
ERROR: TaskFailedException
Stacktrace:
  [1] try_yieldto(undo::typeof(Base.ensure_rescheduled))
    @ Base ./task.jl:1128
  [2] wait()
    @ Base ./task.jl:1225
  [3] wait(c::Base.GenericCondition{ReentrantLock}; first::Bool)
    @ Base ./condition.jl:141
  [4] wait
    @ ./condition.jl:136 [inlined]
  [5] take_buffered(c::Channel{Any})
    @ Base ./channels.jl:532
  [6] take!
    @ ./channels.jl:526 [inlined]
  [7] repl_backend_loop(backend::REPL.REPLBackend, get_module::Function)
    @ REPL ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/REPL.jl:437
  [8] start_repl_backend(backend::REPL.REPLBackend, consumer::Any; get_module::Function)
    @ REPL ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/REPL.jl:427
  [9] start_repl_backend
    @ ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/REPL.jl:424 [inlined]
 [10] run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_on_current_task::Bool, backend::Any)
    @ REPL ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/REPL.jl:651
 [11] run_repl(repl::REPL.AbstractREPL, consumer::Any)
    @ REPL ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/REPL.jl:637
 [12] run_std_repl(REPL::Module, quiet::Bool, banner::Symbol, history_file::Bool)
    @ Base ./client.jl:491
 [13] run_main_repl(interactive::Bool, quiet::Bool, banner::Symbol, history_file::Bool)
    @ Base ./client.jl:512
 [14] repl_main
    @ ./client.jl:599 [inlined]
 [15] _start()
    @ Base ./client.jl:574

    nested task error: TaskFailedException
    Stacktrace:
     [1] #wait#583
       @ ./task.jl:363 [inlined]
     [2] wait
       @ ./task.jl:360 [inlined]
     [3] fetch
       @ ./task.jl:525 [inlined]
     [4] prompt!(term::REPL.Terminals.TextTerminal, prompt::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
       @ REPL.LineEdit ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/LineEdit.jl:2981
     [5] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
       @ REPL.LineEdit ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/LineEdit.jl:2847
     [6] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
       @ REPL ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/REPL.jl:1657
     [7] (::REPL.var"#61#62"{REPL.LineEditREPL, REPL.REPLBackendRef})()
       @ REPL ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/REPL.jl:648
    
        nested task error: InterruptException:
        Stacktrace:
         [1] yieldto(t::Task, x::Any)
           @ Base ./task.jl:1101
         [2] yieldto
           @ ./task.jl:1095 [inlined]
         [3] wait()
           @ Base ./task.jl:1213
         [4] wait(c::Base.GenericCondition{Base.Threads.SpinLock}; first::Bool)
           @ Base ./condition.jl:141
         [5] wait
           @ ./condition.jl:136 [inlined]
         [6] wait_readnb(x::Base.TTY, nb::Int64)
           @ Base ./stream.jl:416
         [7] eof(s::Base.TTY)
           @ Base ./stream.jl:106
         [8] eof(io::REPL.Terminals.TTYTerminal)
           @ Base ./io.jl:472
         [9] (::REPL.LineEdit.var"#prompt!##2#prompt!##3"{REPL.Terminals.TTYTerminal, REPL.LineEdit.ModalInterface, REPL.LineEdit.MIState, REPL.LineEdit.Prompt})()
           @ REPL.LineEdit ~/.julia/juliaup/julia-nightly/share/julia/stdlib/v1.13/REPL/src/LineEdit.jl:2946
InterruptException:
Stacktrace:
 [1] yieldto(t::Task, x::Any)
   @ Base ./task.jl:1101
 [2] yieldto
   @ ./task.jl:1095 [inlined]
 [3] wait()
   @ Base ./task.jl:1213
 [4] wait(c::Base.GenericCondition{Base.Threads.SpinLock}; first::Bool)
   @ Base ./condition.jl:141
 [5] wait
   @ ./condition.jl:136 [inlined]
 [6] _wait(t::Task)
   @ Base ./task.jl:312
 [7] (::Base.var"#start_profile_listener##2#start_profile_listener##3"{Task, Base.AsyncCondition})()
   @ Base ./Base.jl:356
 [8] _atexit(exitcode::Int32)
   @ Base ./initdefs.jl:472
➜  ~ 

Metadata

Metadata

Assignees

No one assigned

    Labels

    REPLJulia's REPL (Read Eval Print Loop)error handlingHandling of exceptions by Julia or the userregressionRegression in behavior compared to a previous version

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions