From: Juho S. <js...@ik...> - 2005-08-31 07:50:24
|
<js...@ik...> wrote: > What a funny bug. The argument list to some function is (#1=#<FUNCTION > #1# {10001E1869}>), which Slime then tries to print when showing a > sldb stack-trace for the original error. The printer doesn't think > that functions are compound objects, and thus won't do circularity > detection on them in some circumstances, and runs out of stack while > printing an infinitely repeating sequence of "FUNCTION ". > > The easy fix to this is to also treat functions as compound objects in > SB-IMPL::COMPOUND-OBJECT-P. I'm not sure whether it's the right fix. After a good night's sleep it seems obvious that this isn't the right fix, and the correct one would be to ensure that the function actually has a reasonable value in the name slot. This is a recent breakage, that I don't pretend to understand. Here's a simple test case for somebody who does: (sb-pcl::ensure-ctor `(sb-pcl::ctor ,(gensym)) nil nil) On 0.9.3 this will return a function with a name of 0 (the fixnum, not a symbol), on 0.9.4 one that has itself as a name. Neither one makes much sense, but at least the first one doesn't cause too much collateral damage. -- Juho Snellman |