[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PCL Bombing on dynamic slots



I'm running PCL under ExCL on a Sun/3, and am having trouble with PCL
bombing out when I try to instantiate a class with two dynamic slots
for the second time.  I get slightly different behavior with the PCL
versions of 1/26/87 and 3/21/87; both are shown below.  This example
runs fine under the 3/21/87 version with VAXLISP.  The 3/21/87 version
compiled with no errors.

Separate question: I cooked up this example because I was trying to
figure
out how to tell if a given dynamic slot had been allocated on a given
instance.  Best way I've found so far is to call 
pcl::iwmc-class-dynamic-slots on the instance, and look for the slot
name in the result.  Is there a better/more "official" way to do this?

Dave Wallace	(wallace@ucbarpa.Berkeley.EDU)
* * * * * * * *
;;; PCL version of 3/21/87
Extended Common Lisp 1.5.6 (1/23/87 15:22)
Copyright (c) 1986, Franz Inc., Alameda, Ca 
<cl> (defclass foo () ((var1 3) (var2 :allocation :dynamic :initform 5)
(var3 :allocation :dynamic :initform 7))
(:accessor-prefix ||)(:constructor make-foo))

FOO 
<cl> (setq f1 (make-foo))

#S(FOO VAR1 3) 
<cl> (setq f2 (make-foo))

Process lisp illegal instruction (core dumped)

;;; PCL version of 1/26/87
Extended Common Lisp 1.5.6 (1/23/87 15:22)
Copyright (c) 1986, Franz Inc., Alameda, Ca 
<cl>  (defclass foo () ((var1 3) (var2 :allocation :dynamic :initform 5)
(var3 :allocation :dynamic :initform 7))
(:accessor-prefix ||)(:constructor make-foo))

FOO 
<cl> (setq f1 (make-foo))

#S(FOO VAR1 3) 
<cl> (setq f2 (make-foo))
Error: Received signal number 10 (Bus error)

[1] <cl> :zo
Evaluation stack:

->(EXCL::READ-EVAL-PRINT-LOOP NIL "Received signal number 10 (Bus error)
" ...)
  (ERROR "Received signal number ~s ~@[(~a)~]~%" 10 ...)
  (FUNCALL (LAMBDA # #))
  (EXCL::%EVAL (MAKE-FOO))
  (SETQ F2 (MAKE-FOO))
  (EXCL::%EVAL (SETQ F2 #))
  (EVAL (SETQ F2 #))
  (EXCL::READ-EVAL-PRINT-LOOP NIL NIL ...)
... 1 more ...

[1] <cl> :res

<cl> :exit

Process lisp finished