Pavel
Pavel

Reputation: 413

Dump heap in SBCL

My program execution was aborted with the following diagnostics:

Heap exhausted during garbage collection: 0 bytes available, 16 requested.
Gen  Boxed   Code    Raw  LgBox LgCode  LgRaw  Pin       Alloc     Waste        Trig      WP GCs Mem-age
 3   21843      1     47      0      0      0   59   716955392    368896     2000000   21891   0  1.0481
 4       0      0      0      0      0      0    0           0         0     2000000       0   0  0.0000
 5       0      0      0      0      0      0    0           0         0     2000000       0   0  0.0000
 6     491      2    223     55      0     10    0    24917312    674496     2000000     781   0  0.0000
 7   10080      0     15      0      0      0    0   330663696    129264     2000000   10095   0  0.0000
           Total bytes allocated    =    1072536400
           Dynamic-space-size bytes =    1073741824
GC control variables:
   *GC-INHIBIT* = true
   *GC-PENDING* = true
   *STOP-FOR-GC-PENDING* = false
fatal error encountered in SBCL pid 88102(tid 0x7fff9e07c380):
Heap exhausted, game over.

Welcome to LDB, a low-level debugger for the Lisp runtime environment.
ldb>

Is there a way to find where all of the memory was consumed? The program itself is here: https://github.com/hemml/gridgen2

Upvotes: 0

Views: 306

Answers (1)

WillLisp4Fud
WillLisp4Fud

Reputation: 11

SBCL's (room t) will give you quite a bit more information if you can do it before you run out of heap. I'm unfamiliar with LDB and whether or not it can execute room. However you could wrap a call to (room t) with something that redirects its output to file, and add the function to the *after-gc-hooks* list so you can see the (extremely verbose) growth patterns.

Upvotes: 1

Related Questions