-
Notifications
You must be signed in to change notification settings - Fork 30
SIGILL in <crossbeam_channel::flavors::zero::Channel<T>>::recv
#76
Comments
Oh, and here's how the failure looks like
|
I've tried replacing the crossbeam_channel with mutexes and condvars, and now that test blocks forever, which kinda hints that my code is to blame. Can it be the case that crossbeam aborts for some misuses of the API (I see some aborts in the code)? If that is the case, then printing a message might be helpful :) EDIT: nvm, replacing crossbeam_chanel with Mutex/Condvar did fix the issue. I had forgotten to actually notify on the condwar, and that kinda exmplains the deadlock :-) EDIT: just in case, here's condvar impl: rust-lang/rls#951 |
When building RLS inside rust-lang/rust, I see a weird SIGILL in crossbeam_channel: crossbeam-rs/crossbeam-channel#76 Switching to a condvar for synchronization seems to fix the issue.
I cannot reproduce the issue. :( Does it also happen in debug mode? It'd help to see which line in the code caused SIGILL. Another thing that'd help would be to see where the other threads got stuck at the moment of SIGILL, too. For example, it would be telling if some other thread was inside |
Oh, it could be because |
Don't know of a proper way to do this, I just make a commit on rust-lang/rust repo which updates submodule. |
Ok, I've managed to reproduce the issue. Do you know how to run the test in gdb? This is what I'm getting:
Also, is there a way to run the test in debug mode rather than release? |
I've used the following:
|
Don't really know about this. I actually don't understand the specifics of x.py :( One thing I've tried though is to setup the stage2 as a custom rustup toochain and then do One thing I realize now is that I've always tested in debug inside rls repo. Maybe |
@stjepang yep! Running |
As a sanity check, |
I've just published v0.2.3 that should fix this bug. |
Yep, works on my machine! Thanks for the swift fix! |
Hi! I am seeing this very weird SIGILL. Unfortunately, I can't give a nice steps to reproduce because there are a lot of moving parts here. I am not even sure that it is a problem with crossbeam-channel. However I think it makes sense to report the issue nonetheless :)
I've recently added crossbeam channel to RLS: rust-lang/rls#923.
I don't actually send any messages and simply wait for channels to close, taking advantage of the
select!
macro. Specifically, I see SIGILL in this bit of code:https://github.com/rust-lang-nursery/rls/blob/0b9254b7dcdf52bba50a6e477d7891fb23adf62b/src/concurrency.rs#L44-L57
The most interesting part is that I get SIGILL only when testing RLS inside rust-lang/rust repository. That is,
cargo test
inside RLS itself works.I get rust-lang rust checked out locally to 29ee65411c46b8f701bd1f241725092cb1b347e6 commit, and the src/tools/rls submodule checked out to matklad/rls@746b0f4.
With this setup, runnig
./x.py test src/tools/rls
sigills. See the rls commit above for the precise point where it happens.So, this is definitely not the most self-contained and easy to reproduce bug report, but this is the best I have at this time :-)
The text was updated successfully, but these errors were encountered: