[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gcl-devel] GCL memory allocation and GC problems

From: Vadim V. Zhytnikov
Subject: Re: [Gcl-devel] GCL memory allocation and GC problems
Date: Wed, 10 Dec 2003 20:09:52 +0300
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.5) Gecko/20031006

Camm Maguire ?????:

Vadim, I'm looking at the rest of your post, but there is one part I
cannot reproduce:

"Vadim V. Zhytnikov" <address@hidden> writes:

Test #2. Same as 1 but before allocating CONS pages I set
hole size 60000 (~ half of maxpages).
The result is drastically different. I allocated 60K
pages for CONS with 68 GC for CONS, 0 GC for relocatable
and time 40 seconds only. Hole size gradually decreases
from 60K to some small value as number of CONS pages
increases (CONS pages are drawn from hole).  When
60K pages of hole are exhausted GCL automatically resets
it value to 60K pages and after this attempt to allocate
next 8K pages for CONS fails.  GCL thinks for 10 minutes
and crashes with message:
Unrecoverable error. GBC is not enabled.

What I get is an infinite loop of GC calls on cons pages, as GCL tries
to allocate space to print the error message "space for cons is
exhausted".  Obviously this needs fixing, but could you please forward
me the exact code you used to get this message?  Thanks!

Take care,

Test atest.lisp is attached.  Load it, set hole  size to 60000
and make (pass) several times - 8th (pass) should eventually
result in crash.  You may want to set si::*notify-gbc* to t
at the very beginning or right before 8th (pass).
You will see that at some point (something around 65000 CONS pages)
GCL stop allocate new pages for CONS I really want to
understand why.

      Vadim V. Zhytnikov


(si::allocate-growth 'cons 1 1000 66 33)
(setq cnt 0)
(si::gbc-time 0)
(setq w nil)

(defun pass ()
  (progn (setq cnt (1+ cnt))
    (format t "***** Starting pass #~d" cnt)
    (time(setq w (cons (make-list 3000000) w)))
    (format t "***** End of pass #~d" cnt) (terpri)
    (format t "***** Run time: ~,2F  GC time: ~,2F (~,1F%)" 
      (/  (get-internal-run-time) 100.0)
      (/  (si::gbc-time) 100.0)
      (* (/ (si::gbc-time) (get-internal-run-time)) 100.0))


reply via email to

[Prev in Thread] Current Thread [Next in Thread]