PCL corruption
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Medium
|
Unassigned |
Bug Description
(reported by Bruno Haible)
After the "layout depth conflict" error, the CLOS is left in a state where
it's not possible to define new standard-class subclasses any more.
Test case:
(defclass prioritized-
((dependents :type list :initform nil)))
(defmethod sb-pcl:
t)
(defclass prioritized-
()
(:metaclass sb-pcl:
;; ERROR, Quit the debugger with ABORT
(defclass typechecking-
())
Expected: #<STANDARD-CLASS TYPECHECKING-
Got: ERROR "The assertion SB-PCL::WRAPPERS failed."
[ This test case does not cause the error any more. However,
similar problems can be observed with
(defclass foo (standard-class) ()
(:metaclass sb-mop:
(sb-
;; ERROR, ABORT
(defclass bar (standard-class) ())
(make-instance 'bar)
]
Changed in sbcl: | |
importance: | Undecided → Medium |
status: | New → Confirmed |
Changed in sbcl: | |
status: | Confirmed → Fix Committed |
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
I can't reproduce this.
CL-USER> (defclass foo (standard-class) ()
(:metaclass sb-mop: funcallable- standard- class)) FUNCALLABLE- STANDARD- CLASS FOO> finalize- inheritance (find-class 'foo)) :CPL-PROTOCOL- VIOLATION {5A6C15C9}>. dispatcher ()
((dependents :type list :initform nil))) DISPATCHER> validate- superclass ((c1 sb-pcl: funcallable- standard- class)
( c2 (eql (find-class 'prioritized- dispatcher) ))) :CPL-PROTOCOL- VIOLATION {5AB846C9}>. generic- function (prioritized- dispatcher standard- generic- function)
(:metaclass sb-pcl: funcallable- standard- class)) FUNCALLABLE- STANDARD- CLASS PRIORITIZED- GENERIC- FUNCTION> reader- class (standard-class) READER- CLASS> ation-version) 14-76e4485- dirty"
#<SB-MOP:
CL-USER> (sb-mop:
; Evaluation aborted on #<SB-PCL:
CL-USER> (defclass bar (standard-class) ())
#<STANDARD-CLASS BAR>
CL-USER> (make-instance 'bar)
#<BAR NIL {5A9B4B21}>
CL-USER>
; No value
CL-USER>
; No value
CL-USER> (defclass prioritized-
#<STANDARD-CLASS PRIORITIZED-
CL-USER> (defmethod sb-pcl:
t)
; Evaluation aborted on #<SB-PCL:
CL-USER> (defclass prioritized-
()
#<SB-MOP:
CL-USER> (defclass typechecking-
())
#<STANDARD-CLASS TYPECHECKING-
CL-USER> (lisp-implement
"1.1.6.
CL-USER>