-
Notifications
You must be signed in to change notification settings - Fork 38
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
Test failures for 1.5.0 on Alpine Linux #90
Comments
Hmm, interesting. I can't tell offhand what is causing those, but probably something to do with threading; the About the first failure, is it somehow possible that files in Alpine are not case-sensitive? Although that sounds like something very fundamental to Unix that shouldn't be different. |
ping @nekopsykose (Alpine Linux maintainer), maybe they know something about it :/ |
that's a filesystem thing and nothing in this case has casefolding |
running them locally they all pass, funny.. |
ah, it's flaky. it toggles between:
this just sounds like some ordering that is broken |
ah. the reason they cascade like that is because your mutex doesn't unlock on fail. so whatever test fails first, causes the rest to fail on lock (poisoned dead mutex) the first failure is always
etc. seems that something races appending |
i don't know how to fix that, but maybe you have a clue.
the default |
Thanks! Yeah, the poisoning is kind of on purpose, if it happens then something is wrong anyway so I didn't bother cleaning it up. I don't really know what's happening there that's causing the callbacks to be called multiple times. Maybe I'm doing something stupid with the locking/ |
that makes sense. just a little noisy, but the first failure is all that mattered anyway. |
Could this be resolved now? I believe the |
Are you planning to create a release soon? It would be nice to activate the tests again along with it 😊 |
Ah yes I didn't realize that I would need to make a new release. However, these panic guard test failures still seem to appear with rustc version 1.77, both on I can only reproduce this on my work computer (ubuntu 22) but not on my laptop (fedora 39), and it only happens occasionally. It happens a little bit more often if I force a re-link by removing the unit test binary, like rm target/debug/deps/tere-25a48097920d5416 && cargo test (the name of the binary is shown in the first few lines of the output of cargo test) This suggests that it can have something to do with the CPU being busy, which would make sense as this seems to be due to a race condition. |
@timon-schelling re: #104 (comment) Do you know what the environment (distro / rustc version) in the codespace is? I would like to investigate this if it can be reliably reproduced. I tried now on Debian 11 (in a container) and there at least the issue doesn't appear. |
I tried this also with an Alpine Linux container (using Distrobox) and I can't reproduce it there either (on my laptop, which I mentioned above that I couldn't reproduce anyway). |
Okay, I was able to confirm that it's a data race issue by running the thread sanitizer. I installed the nightly toolchain, and then run with RUSTFLAGS="-Zsanitizer=thread" cargo +nightly test --target=x86_64-unknown-linux-gnu and it reports data races in those tests. That shouldn't happen in safe Rust... |
I'm unable to reproduce this, tried on multiple codespaecs and my nix machine. |
I guess a library that is using some unsafe code dose not have a save api? |
But I don't see any non std or tere line in the warning. 🤔 |
The But I will try to investigate with an MWE to see if this is truly a bug in std. |
I looked into this again. Basically, tests run in parallel and concurrently modify the panic hook, see for example these discussions:
If I restrict the tests to a single thread with At least it seems like the issue is with the tests and not with my code being tested, which is a relief. But I don't know of a good way to resolve this. |
Hello! 🐻
I've been trying to package
tere
for Alpine Linux and I created a merge request here: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/49128As you can see from the failed pipelines, some tests are failing:
Also, I get the following failures even though I skip that one test:
I am skipping these tests for now since I am not sure what is happening there.
Weirdly enough, all the tests (including those ones) pass on Arch Linux.
Let me know if I can provide more info to debug this.
Thanks for this great tool! 💯
The text was updated successfully, but these errors were encountered: