Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ungraceful exit error #195

Open
krynju opened this issue May 26, 2022 · 2 comments
Open

Ungraceful exit error #195

krynju opened this issue May 26, 2022 · 2 comments

Comments

@krynju
Copy link

krynju commented May 26, 2022

This showed up on process exit and looks pretty weird
This is on Julia 1.6.5 with 2 threads and this /Downloads/src/Curl/Multi.jl:98 line corresponds to this close here

close(easy.output)

It's very likely Downloads.jl is being used on both threads here, so it might be just a result of thread safety issues, but I haven't seen this error mentioned anywhere, so it may be something new

ERROR: LoadError: val already in a list
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] push!
    @ ./linked_list.jl:53 [inlined]
  [3] wait(c::Base.GenericCondition{Base.Threads.SpinLock})
    @ Base ./condition.jl:103
  [4] lock(rl::ReentrantLock)
    @ Base ./lock.jl:100
  [5] lock
    @ ./condition.jl:73 [inlined]
  [6] lock
    @ ./channels.jl:424 [inlined]
  [7] close(c::Channel{Vector{UInt8}}, excp::InvalidStateException) (repeats 2 times)
    @ Base ./channels.jl:183
  [8] check_multi_info(multi::Downloads.Curl.Multi)
    @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Multi.jl:98
  [9] (::Downloads.Curl.var"#39#41"{Int32, Downloads.Curl.Multi})()
    @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Multi.jl:122
 [10] lock(f::Downloads.Curl.var"#39#41"{Int32, Downloads.Curl.Multi}, l::ReentrantLock)
    @ Base ./lock.jl:187
 [11] event_callback(uv_poll_p::Ptr{Nothing}, status::Int32, events::Int32)
    @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Multi.jl:120
 [12] poptask(W::Base.InvasiveLinkedListSynchronized{Task})
    @ Base ./task.jl:760
 [13] wait()
    @ Base ./task.jl:769
 [14] wait(c::Base.GenericCondition{Base.Threads.SpinLock})
    @ Base ./condition.jl:106
 [15] _wait(t::Task)
    @ Base ./task.jl:293
 [16] sync_end(c::Channel{Any})
    @ Base ./task.jl:349
 [17] macro expansion
    @ ./task.jl:388 [inlined]
@ericphanson
Copy link
Contributor

ericphanson commented May 26, 2022

This is an error I've seen a lot with Downloads pre-1.7.3 or 1.8 (both of which include a bunch of thread safety fixes from #157 and others). We backported these to 1.7.3 in #175 but we should also backport them to 1.6. Though while they are bugfixes they are pretty complicated and someone already hinted at an issue on 1.7.3: https://discourse.julialang.org/t/julia-v1-7-3-has-been-released/81683/3. So maybe the 1.6 backport should wait until it's been tested in the wild on 1.7.3 a bit more? not sure

@StefanKarpinski
Copy link
Member

Has anyone seen this error on a more recent Julia?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants