I hope someone can help with this simple problem. I'm trying to
allocate some large alien objects with CMU Lisp 17f running on Solaris
2.5. Everything seems to work, but I can't allocate more than about 8
MB of data. For example:
* (setf z (make-alien int 2000000))
Warning: Declaring Z special.
#<Alien (* (SIGNED 32)) at #x0003FD78>
* (setf z1 (make-alien int 300000))
Warning: Declaring Z1 special.
#<Alien (* (SIGNED 32)) at #x00000000>
* (setf z1 (make-alien int 100000))
#<Alien (* (SIGNED 32)) at #x007E0F80>
Thus Z gets 8,000,000 bytes but Z1 can't get even 1,200,000 bytes. Is
this a limitation of CMU Lisp? I don't quite understand why this is
so, since make-alien basically calls malloc and I have plenty of real
(64 MB) and virtual (200+ MB) or memory. In fact, I can do
(defvar lisp-array (make-array 10000000 :element-type
'(signed 32)))
and CMU Lisp happily allocates the 10 million element array without
problems.
Can any tell me why I can't allocate such large elements with
make-alien? If I can't do this, then I'll have to use standard Lisp
arrays and copy them back and forth to get them to the alien
functions. Bummer.
Ray