[gambit-list] Regarding garbage collection in Windows XP
Marc Feeley
feeley at iro.umontreal.ca
Tue Sep 8 12:03:25 EDT 2009
On 6-Sep-09, at 11:54 PM, peter lo wrote:
> Dear all,
> I have been using Gambit to write programs for my research, but
> recently I encounter a problem. When I run some programs, I get this
> error:
>
> *** ERROR IN ##rest-param-check-heap -- Heap overflow
> 1> ,b
> 0 ##rest-param-check-heap
> 1 trace-back-path
> 2 find-seq
> 3 find-seq
> 4 find-motif-in-occ-list
> 5 find-motif-in-occ-list
> 6 find-motif-in-occ-list
> 7 find-motif-in-fasta-pruned
> 8 find-motif-in-fasta-pruned
> 9 find-motif-in-fasta-pruned
> ...
> 12 with-output-to-file
> 13 for-each
> 14 for-each
> 15 (interaction) (stdin)@69:1 (for-each (lambda
> (errL) ...
> 1> ,t
>
A ,be would have been more informative, to see the variables in each
frame (to have an idea of the type of data you are manipulating).
>
> I am using Gambit-C v4.4.4 on Windows XP with 1.95 GB ram. I have
> tried rebooting and run again, and have added a call to (##gc) for
> each run like this:
>
> (for errL '(0.2 0.3)
> (for s (append game-data-sets tompa-data-sets)
> (##gc)
> (with-output-to-file (string-append "motif_finder_res/game_tompa/"
> s "_g_e_" (number->string errL) "_res.txt")
> (f0 (find-motif-in-fasta
> (codify-fasta (read-fasta s) DNA-code)
> 5 20
> (k-best-keeper 50 better-motif)
> errL)))))
>
Calling (##gc) explicitly will not help. One way to get more
information on what is happening is to add the -:d2 option when you
start gsi . This will give you a trace of the GCs that occur, and the
size of the heap, size of the live objects, etc.
> But the same problem arises, and Windows XP says virtual memory low.
> Is this a problem of Gambit or Windows XP? Is the garbage collector
> a mark and sweep one and fragmentation occurrs?
Don't worry about the GC algorithm. Most objects are allocated in an
area that is compacted.
My guess is that your program has a memory leak. It may be due to the
definition of the "for" macro above. Have you tried compiling your
program (I advise using v4.5.1 which has a -exe option to create
standalone executables).
Marc
More information about the Gambit-list
mailing list