IMAP4 example in docs causes memory error for me (OS X 10.3, python 2.3) - help?

John Owens john_owens at yahoo.com
Tue Sep 14 15:19:10 EDT 2004


I am running the IMAP4 example in the documentation:

http://www.python.org/doc/lib/imap4-example.html

with two small changes (different username, comment out print
statement). The inbox I am accessing is 42 MB and has 80-someodd
messages, so the messages are fairly big (all of them have
attachments). When I run this program, I get a malloc error. Now, I'm
really new to python programming, but it was my understanding that
memory management was not something I had to explicitly do. I'd
appreciate some help in understanding what I've done wrong.

If I watch memory usage via "top", the memory usage (vmem) goes up to
3.5 GB, drops back down to a few tens of megabytes, then rises to 3.5
GB or so again, then crashes. (Backtrace is appended at the end of
this message.) It seems odd to me that python should require GB of
memory to read a 40 MB mailbox.

I also installed python 2.3.3 via fink and was able to reproduce the
error in the same way.

Machine / python information:

[JDO:~/Documents/src/vm2imap] jowens% uname -a
Darwin JDO.local 7.5.0 Darwin Kernel Version 7.5.0: Thu Aug  5
19:26:16 PDT 2004; root:xnu/xnu-517.7.21.obj~3/RELEASE_PPC  Power
Macintosh powerpc
[JDO:~/Documents/src/vm2imap] jowens% python -V
Python 2.3.3

JDO

==

*** malloc: vm_allocate(size=7426048) failed (error code=3)
*** malloc[17319]: error: Can't allocate region
Traceback (most recent call last):
  File "minimal.py", line 8, in ?
    typ, data = M.fetch(num, '(RFC822)')
  File "/sw/lib/python2.3/imaplib.py", line 417, in fetch
    typ, dat = self._simple_command(name, message_set, message_parts)
  File "/sw/lib/python2.3/imaplib.py", line 1000, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "/sw/lib/python2.3/imaplib.py", line 830, in _command_complete
    typ, data = self._get_tagged_response(tag)
  File "/sw/lib/python2.3/imaplib.py", line 931, in
_get_tagged_response
    self._get_response()
  File "/sw/lib/python2.3/imaplib.py", line 893, in _get_response
    data = self.read(size)
  File "/sw/lib/python2.3/imaplib.py", line 231, in read
    return self.file.read(size)
  File "/sw/lib/python2.3/socket.py", line 301, in read
    data = self._sock.recv(recv_size)
MemoryError



More information about the Python-list mailing list