-
Notifications
You must be signed in to change notification settings - Fork 477
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
Various test failures on macOS for the channel crate #321
Comments
Interesting. I believe |
@stjepang Does the channel ever depend on this behaviour? |
It doesn't, but there was an issue in Servo where using channels while a thread is panicking would result in accessing a TLS variable declared in That test was added to make sure we're using |
325: Enable testing on macOS (OS X) on Travis CI r=stjepang a=Thomasdezeeuw Note that macOS on Travis is not the fastest thing in the world and as crossbeam already has a huge number of tests still will greatly increase the time it takes for the check to complete. Updates #321. Co-authored-by: Thomas de Zeeuw <thomasdezeeuw@gmail.com>
Can we close this issue? |
I would have like to have CI setup for macOS, but Travis is too slow. So I don't think there is anything else to do here. |
If you know an alternative CI that might be more stable on macOS than Travis, we can try it out. |
There is https://cirrus-ci.org/, which for example mio uses it, but I haven't used it before. @asomers May I ask about your experience with Cirrus? |
I mainly use Cirrus because of its FreeBSD support. The FreeBSD VMs start quickly, much quicker than Travis's OSX images. They're usually even faster than Travis's Linux containers. There have been a few bugs, especially because I was the first Cirrus FreeBSD user, but Cirrus has fixed them all very quickly. They're quite responsive when you open a Github issue. Cirrus can also build in Linux containers, which seem to work fine. And according to the docs it can build OSX images too, but I haven't tried those. Configuring an image doesn't have quite as many bells and whistles as Travis, but it's got all of the stuff you really need. And of course you can always manually add packages. Cirrus even allows you to create a custom VM image, though that's not free. Cheap, but not free. All-in-all, I've been happy with Cirrus. |
That's unfortunate but thanks for digging into this, @Thomasdezeeuw! |
We had some test failures because crossbeam-channel may panic when trying to call recv() during thread shutdown. This seems to be similar to this upstream bug: crossbeam-rs/crossbeam#321. Unfortunately it seems that some operating systems may tear down thread-local storage early, rust-lang/rust#28129, which can trigger panics if trying to interact with TLS during a drop. To avoid this issue, this switches from using a channel to signal the thread shutdown to just using the join handle (which we should have been doing anyway).
We had some test failures because crossbeam-channel may panic when trying to call recv() during thread shutdown. This seems to be similar to this upstream bug: crossbeam-rs/crossbeam#321. Unfortunately it seems that some operating systems may tear down thread-local storage early, rust-lang/rust#28129, which can trigger panics if trying to interact with TLS during a drop. To avoid this issue, this switches from using a channel to signal the thread shutdown to just using the join handle (which we should have been doing anyway).
We had some test failures because crossbeam-channel may panic when trying to call recv() during thread shutdown. This seems to be similar to this upstream bug: crossbeam-rs/crossbeam#321. Unfortunately it seems that some operating systems may tear down thread-local storage early, rust-lang/rust#28129, which can trigger panics if trying to interact with TLS during a drop. To avoid this issue, this switches from using a channel to signal the thread shutdown to just using the join handle (which we should have been doing anyway).
The following tests fail on my macOS machine.
I've added some stacktraces, I'll look into a bit further myself.
use_while_exiting
channel_tests::oneshot_single_thread_recv_chan_close
I've also noticed that in a lot of tests threads are spawned but never joined. Because of this the test runner think the tests passed, but in reality a lot of threads actually panicked.
Also there seems to be no CI for macOS, but Travis supports it (although it is quite slow).
The text was updated successfully, but these errors were encountered: