How to prevent this from happening?

John Machin sjmachin at lexicon.net
Mon May 1 01:08:28 EDT 2006


On 1/05/2006 12:55 PM, phil_nospam_schmidt at yahoo.com wrote:
> Regarding this expression:  1 << x
> 
> I had a bug in my code that made x become Very Large - much larger than
> I had intended. This caused Python, and my PC, to lock up tight as a
> drum, and it appeared that the Python task (Windows XP) was happily and
> rapidly consuming all available virtual memory.
> 
> Presumably, Python was trying to create a really really long integer,
> just as I had asked it.
> 
> Is there a way to put a limit on Python, much like there is a stack
> limit, so that this sort of thing can't get out of hand?
> 

If you mean a command line argument to specify an upper limit for the 
RHS of a << operator, no there isn't one, and no there shouldn't be one.

To cater for sillinesses that aren't caught by exceptions (or where it 
may be a very long time before the exception is triggered, as in your 
case), I'd suggest placing tests close to the action. For example, if 
you are doing some bit-bashing, "assert nshift <= wordsize" or something 
like that may be appropriate.







More information about the Python-list mailing list