Eric Hanchrow <offby1@...> writes:
> This is 0.8.19, that I built myself with
>
> (enable :sb-show-assem)
> (enable :sb-show)
> (enable :sb-ldb)
This is indeed an odd set of features to compile with. (I wouldn't
recommend :sb-show* to anyone who isn't debugging SBCL itself: they're
almost completely useless in all other situations, to the best of my
knowledge.)
> I've got the SBCL process sitting in its LDB debugger, and will keep
> it there for a while, if that's of any use. I don't know the first
> thing about LDB, so I haven't typed anything other than "help" and
> "backtrace".
So I'm pretty sure that this is an unfortunate poor behaviour on
sbcl's part, but only given that you've exhausted the available heap.
(See <http://paste.lisp.org/display/5894> for some evidence.)
If you have ~ 1 million keys in your hash table of strings with
approximately 200 characters, that would be (since the hash table
needs to store keys, and since a string in SBCL 0.8.19 is encoded in
UCS-2) about 800Mb, which is comfortably above SBCL's heap limit on
x86.
So the real bug here is SBCL's lack of graceful heap exhaustion
(throwing a storage-condition or somesuch); it would be very nice to
recover gracefully from these attempts to cons over the limit...
Cheers,
Christophe
|