[Openmcl-devel] clobbered compiler/runtime, but what could it be?

Gary Byers gb at clozure.com
Thu Jun 19 04:18:03 PDT 2008


There was a bug (<http://trac.clozure.com/openmcl/ticket/285>) which
kept APPLY or FUNCALL of #'CALL-NEXT-METHOD from working when
OPTIMIZE (SAFETY 3) is in effect.

That was fixed in other branches and the bug was closed, but the
fix never seems to have made it into the 1.2 tree.  It should
be there now.

On Thu, 19 Jun 2008, Arthur W Cater wrote:

> I'm trying to port to ClozureCL some code originally developed in MCL, and ported to
> Allegro. I'm using a saved cocoa-application and I'm trying to use the easygui widgets.
> For a few days now I've been trying to understand why I'm running into an error when
> an initialize-instance :around method uses call-next-method.
>
> I've tried to prepare a simplified case. The odd thing is, this simplified case works fine
> on its own, but does not work when recompiled after that error has occurred.
>
>
>
> Here's my simplified case: it is my file "notgoblin.lisp".
> I compiled it. Then I started my big-program load, and ran into my error.
> I loaded notgoblin.dfsl, and successfully did (make-instance 'drawable).
> Then I recompiled it and loaded, and now (make-instance 'drawable) failed.
> (Some listener output is appended after the code snippet.)
> Yet if I load that new notgoblin.dfsl into a fresh session, that works.
>
> So, I think something I have done has clobbered something in the compiler, or possibly
> in CLOS caches.
>
> Can anyone offer any suggestions for what sort of thing I might have done?
> I've looked at the CCL functions check-initargs, %%CNM-WITH-ARGS-COMBINED-METHOD-
> DCODE
> which seem involved in creating and using vectors, but I'm more inclined to think that
> I must be doing something odd to clobber cached info. Maybe somebody has been there
> before?
>
>
> Arthur
>
>
>
> ; -----
> (in-package :common-lisp-user)
>
> (defclass gui-mixin ()
>  ((tooltipper :accessor tooltipper :initarg :tooltipper :initform nil))
>  )
>
> (defmethod initialize-instance :around ((item gui-mixin)
>                                        &rest args
>                                        &key top left draw-fn
>                                        &aux replaced)
> "Intent: Allow the position and size of goblin gui items to be specified either
> - in MCL style, using :VIEW-POSITION and :VIEW-SIZE initargs,
> - or in ACL style, using :TOP :LEFT :WIDTH :HEIGHT initargs."
>  (declare (ignorable top left draw-fn))
>  (format t "~&; Init/Around gui-mixin ~a:~{ ~s ~s~}~%" item args)
>  (setf replaced
>        (list*
>         :allow-other-keys t
>         args))
>  (format t "~&; Replaced args are: ~{ ~s ~s~}~%" replaced)
>  (apply #'call-next-method item replaced))
>
> (defclass drawable (easygui::drawing-view gui-mixin)
>  ((draw-fn :reader goblin-drawable-draw-fn :initarg :draw-fn :initform 'false)))
> ; -----
>
>
>
>
>
>
>> Error: value NIL is not of the expected type SIMPLE-VECTOR.
>> While executing: (:INTERNAL CCL::DO-IT CCL::%%CNM-WITH-ARGS-COMBINED-METHOD-
> DCODE), in process Listener(5).
>> Type :POP to abort, :R for a list of available restarts.
>> Type :? for other options.
> 1 > :pop
>
> ? (load "~/notgoblin.dfsl")
> #P"/Users/arthur/notgoblin.dfsl"
> ? (make-instance 'drawable)
> ; Init/Around gui-mixin #<DRAWABLE #xA03966E>:
> ; Replaced args are:  :ALLOW-OTHER-KEYS T
> #<DRAWABLE #xA03966E>
> ? (compile-file "~/notgoblin.lisp" :load t)
> #P"/Users/arthur/notgoblin.dfsl"
> NIL
> NIL
> ? (make-instance 'drawable)
> ; Init/Around gui-mixin #<DRAWABLE #xA016A46>:
> ; Replaced args are:  :ALLOW-OTHER-KEYS T
>> Error: value NIL is not of the expected type SIMPLE-VECTOR.
>> While executing: (:INTERNAL CCL::DO-IT CCL::%%CNM-WITH-ARGS-COMBINED-METHOD-
> DCODE), in process Listener(5).
>> Type :POP to abort, :R for a list of available restarts.
>> Type :? for other options.
> 1 >
>
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>
>



More information about the Openmcl-devel mailing list