Message174515
| Author |
christian.heimes |
| Recipients |
benjamin.peterson, christian.heimes, ctheune, ebfe, gvanrossum, hynek |
| Date |
2012年11月02日.14:04:21 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1351865062.46.0.186831753048.issue16381@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
MemoryError can be raised under two different circumstances that should be handled differently. Either the program tries to allocate a rather large chunk of memory for e.g. a string with a couple of hundred KB and more. Or Python can't malloc() even small amounts of memory for its most basic operations like raising an exception object. That's why PyErr_NoMemory() exists and why it uses a pre-allocated MemoryError object.
When a program can't allocate memory for an image it usually has enough memory left to do proper error reporting and shut down. However when even "x = 2 * 200" fails with a memory error then proper shutdown will most likely fail and hang up the process, too.
Too bad that PyErr_NoMemory() is used for both scenarios and isn't aware how much memory was requested. |
|