This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author mark.dickinson
Recipients Stone, mark.dickinson
Date 2016-11-11.16:27:44
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1478881665.38.0.300123921781.issue28669@psf.upfronthosting.co.za>
In-reply-to
Content
Thanks. The solution here is "Don't do that, then." That is, don't allow this code to execute on your server in the first place.

At a guess, you've got a multithreaded server that's executing the given code on one thread, while continuing to listen for connections on another. Now the problem is not only that the power computation takes a long time, but also that the slow part all happens in a single bytecode instruction, so the GIL never gets released while the power operation is in progress, and no other threads can run.

In theory it might be possible to rework the power operation to release the GIL now and then, but even if we did that there are plenty of other examples in the language that are going to have a similar effect (running for a long time without releasing the GIL). Changing all those isn't particularly practical.

IOW, I'm afraid this isn't a problem with the core Python language; it's a problem with how you're using it: you want to think very carefully before allowing arbitrary untrusted code to execute on your server (if that's what you're doing), for reasons exactly like this one.
History
Date User Action Args
2016-11-11 16:27:45mark.dickinsonsetrecipients: + mark.dickinson, Stone
2016-11-11 16:27:45mark.dickinsonsetmessageid: <1478881665.38.0.300123921781.issue28669@psf.upfronthosting.co.za>
2016-11-11 16:27:45mark.dickinsonlinkissue28669 messages
2016-11-11 16:27:44mark.dickinsoncreate