>>>>> "CR" == Christophe Rhodes <csr21@...> writes:
CR> This, to me, seems to suggest that something is inhibiting
CR> garbage collection.
Thanks, Christophe, for pointing me in the right direction. Apparently
the garbage collection is enabled, but still doesn't run or doesn't
collect the data. When I explicitly invoke garbage collection in my
code with SB-EXT:GC, the program no longer crashes. When I replaced the
SB-EXT:GC call with a ROOM call, the program crashed again soon and the
last reported room information was:
Dynamic space usage is: 528,990,808 bytes.
Read-only space usage is: 39,395,304 bytes.
Static space usage is: 15,537,728 bytes.
Control stack usage is: -4,294,964,400 bytes.
Binding stack usage is: 4,294,967,624 bytes.
Control and binding stack usage is for the current thread only.
Garbage collection is currently enabled.
Breakdown for dynamic space:
233,960,384 bytes for 773,768 simple-character-string objects.
82,671,584 bytes for 1,930,105 instance objects.
67,804,736 bytes for 1,152,922 simple-array-unsigned-byte-32 objects.
55,920,704 bytes for 390,853 simple-vector objects.
34,040,136 bytes for 4,255,017 cons objects.
55,170,200 bytes for 5,622,449 other objects.
529,567,744 bytes for 14,125,114 dynamic objects (space total.)
And the crash report:
Argh! gc_find_free_space failed (first_page), nbytes=16.
Gen Boxed Unboxed LB LUB !move Alloc Waste Trig WP GCs Mem-age
0: 129128 0 0 0 0 528468824 439464 2000000 0 0 0.0000
1: 247 41 0 0 129 1112384 67264 2000000 115 0 5.7746
2: 1249 332 43 32 60 6723056 59920 2000000 1183 0 0.0000
3: 0 0 0 0 0 0 0 2000000 0 0 0.0000
4: 0 0 0 0 0 0 0 2000000 0 0 0.0000
5: 0 0 0 0 0 0 0 2000000 0 0 0.0000
6: 0 0 0 0 0 0 0 0 0 0 0.0000
Total bytes allocated=536304264
Is there any difference between the (SB-EXT:GC) call and automatic
garbage collection? According to the ROOM information garbage
collection is always enabled at that place, so I wonder about the very
different behavior after putting the (SB-EXT:GC) call into the code.
FWIW, the strings are partially created with FORMAT calls in my code and
given to XLIB:DRAW-GLYPHS. I don't know about the instance and array
objects, they must come from CLX, I don't use CLOS nor arrays in my
code.
CR> try running your program on a non-x86, where the GC is a precise
CR> implementation Cheney's algorithm, uncontaminated by ambiguous
CR> roots.
Unfortunately, I don't have access to any non-x86 where I could run an X
program, so I couldn't try this.
Regards,
Milan Zamazal
--
Here is my advice, don't try to program the bleeding edge for the
general populace unless you really, really, really like migraines.
Neal H. Walfield
|