[Python-Dev] FreeBSD 7 amd64 and large memory tests

Andrew MacIntyre andymac at bullseye.apana.org.au
Mon Sep 15 16:18:40 CEST 2008


I noticed issue 3862 (http://bugs.python.org/issue3862), which appears 
to be exposed only on FreeBSD 7.0 amd64 (perhaps 64 bit FreeBSD 7, but 
amd64 is the only 64bit hardware I can check).

As far as I can make out from a couple of quick checks, this appears to
be happening because the process is killed before the malloc() that
exhausts the available swap space is allowed to report an out of memory
condition.

FreeBSD's default process virtual memory limit (ulimit -v) on both i386
and amd64 is "unlimited" for 6.3 and 7.0.  Setting ulimit -v to a finite
value on 7.0 amd64 seems to give rise to "normal" malloc() behaviour so
that test_array passes.

FreeBSD 7 uses a different malloc() implementation than FreeBSD 6 and
earlier, and the new implementation uses mmap() in preference to sbrk().
So I suspect that behaviour was "normal" on FreeBSD 6 amd64 (can't test
at the moment as I don't have that installed anywhere).  Behaviour
appears "normal" on FreeBSD 7 i386 as well.

I haven't yet tried posting a query to a FreeBSD list, as it could simply
be a bug on amd64, but I was wondering whether there was anything (other
than deactivating tests and documenting use of ulimit -v on this
platform) that could be done to work around this behaviour.

Andrew.

-- 
-------------------------------------------------------------------------
Andrew I MacIntyre                     "These thoughts are mine alone..."
E-mail: andymac at bullseye.apana.org.au  (pref) | Snail: PO Box 370
        andymac at pcug.org.au             (alt) |        Belconnen ACT 2616
Web:    http://www.andymac.org/               |        Australia


More information about the Python-Dev mailing list