PC locks up with list operations
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Mon Sep 12 04:44:29 EDT 2011
On Wed, 31 Aug 2011 10:33 pm Steven D'Aprano wrote:
> Twice in a couple of weeks, I have locked up my PC by running a Python 2.5
> script that tries to create a list that is insanely too big.
>
> In the first case, I (stupidly) did something like:
>
> mylist = [0]*12345678901234
[...]
> Apart from "Then don't do that!", is there anything I can do to prevent
> this sort of thing in the future? Like instruct Python not to request more
> memory than my PC has?
For anyone who may care, I can report that ulimit under Linux will help with
this situation.
[steve at wow-wow ~]$ ulimit -v 200000
[steve at wow-wow ~]$ python
Python 2.5 (r25:51908, Nov 6 2007, 16:54:01)
[GCC 4.1.2 20070925 (Red Hat 4.1.2-27)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> L = range(100000000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
MemoryError
(Of course, I would have eventually got a MemoryError even without the
ulimit. *Eventually.* After much thrashing and processes crashing and
pain.)
Does anyone else think it would be useful for Python's memory manager to
enforce user-settable limits? Even just a simple thing like "never try to
allocate more than N bytes at once" would probably go a long way to prevent
a certain class of accidental (or deliberate) DOSes.
--
Steven
More information about the Python-list
mailing list