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
Intermittent failure in loading test #35217
Comments
In helpful tree form, I guess. |
What I'm failing to understand is how the directory got into this form. My impression was that the test would at least write something into those .jl files. |
Looks like this particular situation may have been caused by this test filling up all of |
Wow, this test and only this test failing is a really unexpected symptom of that situation. |
I think there may still be a real issue here also. The out of space issue may just have higher frequency. This test really spams a lot of directories on /tmp |
Yeah, sorry, it does. It's a very thorough test 😬 |
In #35217, I noticed that if we call `close` on an IOStream, but the device that has the underlying file is full, we silently truncate the file without error. To remidy that, introduce an explicit flush call before closing the file. This should either succeed and reflect the changes on disk, or fail and throw an appropriate error.
This one looks like it's back:
|
We have an rr trace for this now. From https://build.julialang.org/#/builders/71/builds/621:
|
Ah, this was a strange one to watch in the debugger, since it seemed like it would just jump over the bad test. This is a timing attack. We have a cache (specifically
We can generate tons of failures by forcing it to slow down: diff --git a/test/loading.jl b/test/loading.jl
index 377087a63f..6aecfce8bd 100644
--- a/test/loading.jl
+++ b/test/loading.jl
@@ -170,6 +171,7 @@ end
println(io, line)
end
end
+ i % 5 == 0 && sleep(0.11)
# look at lines and their order
n = findfirst(line -> startswith(line, "name"), p)
u = findfirst(line -> startswith(line, "uuid"), p) |
So to be more explicit, what happens is that:
I can't really see any way we can differ between the cached data and the data for the new file here... If we controlled the process writing the Project file, we could "dirty" the cache.. Maybe this method of caching is flawed then? |
As previously discussed in #35183, we have an intermittent failure in loading.
Over the past few days I've run this test continuously on around 20 cores and
observe about a 0.5% failure rate. I tried reproducing it with just the random seed,
but that was unsuccessful. Finally, I simply serialized out the inputs to the test_find
function, which yielded a successful reproducer of the issue. The reproducer is as follows:
Both A and C have a project file, both are empty, B does not have a project file.
The text was updated successfully, but these errors were encountered: