You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let res = job.run(fresh,&JobState{tx: my_tx.clone()});
the following line never sends the Message::Finish message, and the main thread hangs waiting for the finish message.
Dealing with this is a little more difficult than I expected. catch_unwind can't be used because Message is not unwind safe due to the reference. Any ideas for an easy way to deal with it? Is this worth fixing?
The text was updated successfully, but these errors were encountered:
This has definitely been annoying to debug in the past when I've run into it, but it ends up not being the hardest thing to track down once you set RUST_BACKTRACE=1 most of the time (and it comes up pretty rarely for me at least).
Perhaps the easiest thing though would be to use a destructor to send a finished message instead of an explicit statement?
Don't hang when Cargo's worker threads panic
This shouldn't ever happen during normal development, but happens from
time to time while developing Cargo itself.
Closes#6433
If a Job ever panics, Cargo will hang indefinitely. I've seen this a few times during development (and a recently exposed bug in metabuild).
The issue is that if this line ever panics:
cargo/src/cargo/core/compiler/job_queue.rs
Line 405 in eb38ad0
the following line never sends the
Message::Finish
message, and the main thread hangs waiting for the finish message.Dealing with this is a little more difficult than I expected.
catch_unwind
can't be used becauseMessage
is not unwind safe due to the reference. Any ideas for an easy way to deal with it? Is this worth fixing?The text was updated successfully, but these errors were encountered: