-
Notifications
You must be signed in to change notification settings - Fork 31
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
Unwind error if the Coroutine::yield_with is inlined #51
Comments
We really should keep this issue open until we've found the reason. It's not that bad that this method can't be inlined safely but it still annoys me to no end... The only thing that comes to my mind as a plausible reason though, is that Rust's (or LLVM's) ABI does something funky somewhere which Boost.Context does not know and thus something isn't carried over correctly. For instance some kind of stack frame pointer which isn't updated every time because LLVM viewed it as unnecessary. |
Proposed: Check a flag after Small performance hit, need to keep the flag in the I'll try to get it working and PR later today. |
Hmm, I think it doesn't require a flag in |
I'll try to figure out passing through |
Hey @glasswings! If you intend to stick with this project for a while I can offer you to give you a quick introduction into how coio works and answer all your questions. You can ping me at my mail address if you want to and if you're comfortable with voice chat, because typing everything down would take ages. 😄 |
Now we can only add
#[inline(never)]
on theCoroutine::yield_with
method.You can reproduce it anytime by replacing it with
#[inline(always)]
, and then callcargo test --release
, you will see thecoroutine_unwinds_on_drop
test will fail.The text was updated successfully, but these errors were encountered: