-
-
Notifications
You must be signed in to change notification settings - Fork 751
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
(0.7 / 0.8) SslContext::new() is not returning (until thread interrupted) #532
Comments
That's a weird place for it to block. Can you grab a stack trace when it's blocked? |
How can I do that? |
The easiest way would probably be to run it in your debugger of choice, pause it at that point and take a backtrace there. |
This is very weird. Why is it going into python!? At this point I think this is an issue on my system.
|
That is a very bizarre stack trace. I'm assuming your thing is intentionally linking to Python? My hunch right now is that it could be cryptography-installed OpenSSL locking callbacks. I'm poking some of the devs to see if that's right. |
There is one thread in my program that links to python, written by another developer, to use the python dropbox api. I forgot about that. Yeah, I think its in the locking callbacks |
Looking at the python dropbox code he wrote, it acquires the GIL and never drops it. I guess he figured he was the only python consumer. I would have thought so too until now. He even writes:
So yeah, I think I can sort this. |
Haha, that'd do it! |
Those callbacks have been moved into C in cryptography 1.6, so upgrading should avoid the GIL issue entirely if keeping it released while in Rust becomes hard. |
I've got a weird problem that I've been struggling with off and on for the last few days.
I've got a project that uses hyper and lettre. Both use ssl. hyper still requires 0.7, but lettre uses 0.8. Anyhow, they seemed to work with those separate versions, but just in case I back-coded a branch of lettre to use 0.7 again, and this made no difference.
The problem is that in lettre::transport::smtp::SmtpTransportBuilder::new(), the call to SslContext::new(SslMethod::Tlsv1) does not return. When I ^C the entire program, it does return and runs the next few commands but is quickly killed thereafter.
To be sure, this works in general. Something about my specific case is causing the problem but I cannot for the life of me imagine what it might be.
My system openssl library is 1.0.2j
I'm using an older rust nightly because I haven't upgraded plugin-related deps yet: rustc 1.14.0-nightly (a7bfb1aba 2016-10-09)
The text was updated successfully, but these errors were encountered: