From: Luke J C. <lu...@ba...> - 2009-10-07 19:05:26
|
On Wed, 07 Oct 2009 11:57:41 -0700, Christophe Rhodes <cs...@ca...> wrote: > "Luke J Crook" <lu...@ba...> writes: > >> On Wed, 07 Oct 2009 00:49:48 -0700, Christophe Rhodes >> <cs...@ca...> wrote: >> >>> Luke J Crook <lu...@ba...> writes: >>> >>>> What does the following mean exactly? :) >>> >>> It means that something has caused the effective method (the >>> combination >>> of all the applicable methods) for the generic function behind >>> (slot-value <x> 'lispbuilder-sdl::pause) >>> to be recomputed: and that that computation needs to be able to call >>> the >>> same generic function (which isn't possible, because we don't know to >>> call it yet). The system knows how to break many of these vicious >>> metacircles, but not this one. >>> >>>> vicious metacircle: The computation of an effective method of >>>> #<STANDARD-GENERIC-FUNCTION (SB-PCL::SLOT-ACCESSOR :GLOBAL >>>> LISPBUILDER-SDL::PAUSE >>>> SB-PCL::READER) (1)> >>>> for arguments of types (#<STANDARD-CLASS LISPBUILDER-SDL:MIXER>) >>>> uses the effective method being computed. >>>> [Condition of type SIMPLE-ERROR] >>> >>> Having said that: I am surprised that this can even happen in this >>> case; >>> you've got standard classes and standard generic functions everywhere. >>> What weirdness is going on? The same method called from multiple >>> threads on startup? Interposing MOP stuff? I can't tell just from >>> this >>> information. >> >> That gives me at least something to go on, thanks. I'm definitely not >> trying to do anything fancy with the MOP, just the the most basic CLOS >> possible to get the job done. The code in question is here if you are >> interested. I'll spend some time and try to work this out. > > That does all look rather normal. Is it repeatable? How do you trigger > it? Can you get a backtrace? There was no backtrace available (slime's own words). And each time I tried to exit to the REPL it threw me back into the same error until it eventually complained that it exceeded the max number of nested restarts (or something, sorry I forgot the actually message returned), and then dropped into ldb. It hasn't happened since though. - Luke |