Mark Dickinson added the comment:

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.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue28669>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to