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

John Owens john_owens at
Tue Sep 14 21:19:10 CEST 2004

I am running the IMAP4 example in the documentation:

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



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

More information about the Python-list mailing list