-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Inconsistent test failures (setfield: expected Ptr{None}, got Symbol) #3956
Comments
Yikes, that's familiar. I was getting that all week last week but then it went away. Do you have any environment variables set? |
Hmm. Now I can't get it to do it at all. What's weird is that I don't think I updated or changed anything.
Many :-). But nothing that looks suspicious. The only thing in my juliarc.jl is a single |
That's a funny definition of "consistent." :) #3888 was Stefan's run-in with this one. Title updated. |
It's consistently-inconsistent :). It's odd because it failed for me 6 times in a row before I submitted this issue. Now it has passed for me in the last 9 trials. |
I wonder if this is some sort of race condition in the I/O system. @loladiro did we see this before your no-copy updates? |
And I'm seeing this again now. It's really weird – it's not random but seems to come and go – for long stretches I'll see it and then I won't. It feels more like a memory issue than a race condition. |
Just ran into this. I find I can trigger consistently (for now) it as long as I ran at least one other test: ~/src/julia/test$ julia runtests.jl socket
* socket
SUCCESS
~/src/julia/test$ julia runtests.jl socket complex
From worker 2: * socket
From worker 3: * complex
Worker 2 terminated.
ERROR: type: setfield: expected Ptr{None}, got Symbol
in deserialize at serialize.jl:476
in deserialize at serialize.jl:439
in handle_deserialize at serialize.jl:300
in anonymous at task.jl:835
ERROR: ProcessExitedException()
in yield at multi.jl:1512
in wait at task.jl:105
in wait_full at multi.jl:545
in remotecall_fetch at multi.jl:645
in remotecall_fetch at multi.jl:650
in anonymous at multi.jl:1353
at /home/kmsquire/Source/julia/test/runtests.jl:20 |
I got it this morning, with |
Minimal test case: ids = addprocs(1)
@everywhere using Base.Test
remotecall_fetch(ids[1], Core.include, "socket.jl") |
I have a vague suspicion that this has to do with the getaddrinfo test. Would you mind putting say a |
So it turns out that, on some systems, looking up the ip address of "foo.bar" doesn't fail, and returns an actual address. (Go figure!) This causes the last statement of This also explains why it's intermittent. Adding |
But there might be a better fix, e.g., in testing the return value from |
I don't have time to look into this more right now, so I'll leave it to someone else to commit the proper fix. |
So the actual problem is in serializing TcpSockets (I guess that makes sense)? Also is foo.bar actually valid, or are we misinterpreting libuv return codes which makes it think it's valid? |
It's not actually valid, but some DNS servers return an ip address anyway, perhaps to redirect traffic or for some other nefarious (or possibly benign but annoying) purpose. For example, you can set your dns server to 208.67.222.222 or 208.67.220.220 to see what I mean. |
Perhaps we should be using a name guaranteed to be invalid, such as |
...of course I don't know if that's sufficient defense against NXDOMAIN redirects. |
Good point @pao |
That seems to work with the servers I just posted! |
Damn. I guess that $40 I spent to reserve |
* Hopefully address NXDOMAIN redirect issue causing #3956 * Still need to address TcpSocket serialization
Let's scrap this and set up a business selling |
So it turns out that even with "foo.invalid", I still sometimes get a valid connection opening because of a NXDOMAIN redirect.... |
Several arcseconds of a circle of hell should be reserved for DNS operators who do this. |
I'm a little confused as to the purpose of this test. Is it to ensure that DNS name resolution on nonexistent domains fails? I'm not sure that's a good test, as we're completely at the mercy of the DNS providers, as we've seen. If it's to ensure that we're picking up errors from
I think the chances of a DNS server responding to that kind of query are somewhat lower, (I haven't found a server that does so, but if you can find one, I will tip my hat to you, and sign your infernal petition) |
It's to test the error case in getaddrinfo, so that should do. |
I'm still with @pao on the hell thing though. |
At last, we are no longer beholden to those most infernal of DNS providers in our tests. The people let loose a collective sigh of relief, and there was much rejoicing. |
Stdlib: Pkg URL: https://github.com/JuliaLang/Pkg.jl.git Stdlib branch: master Julia branch: master Old commit: d801e4545 New commit: 6b4394914 Julia version: 1.12.0-DEV Pkg version: 1.12.0 Bump invoked by: @IanButterworth Powered by: [BumpStdlibs.jl](https://github.com/JuliaLang/BumpStdlibs.jl) Diff: JuliaLang/Pkg.jl@d801e45...6b43949 ``` $ git log --oneline d801e4545..6b4394914 6b4394914 Use more internal Pkg.add api to bypass auto-registry-install (#3941) 6002a29de Pkg.test: document that coverage can be a string (#3957) 77f0225b8 don't use `get_extension` to bridge REPLExt to REPLMode (#3959) e6880bc9d add clarifying comment about source_path being the package root (#3956) b1b4df8d8 Fix codeblock language and prompt in Pkg.status() docstring (#3955) ``` Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
Anyone else seeing this? (35902fc)
But it works fine if I say
env JULIA_CPU_CORES=1 make testall
.The text was updated successfully, but these errors were encountered: