Make a class object unreachable
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
As far as I know the MOP, the following code should cause the finalizer to be called and the message to be printed. However, the finalization does not happen. Therefore I suspect that there are some other strong references to the class object that are not removed by calling SETF FIND-CLASS NIL and REMOVE-
(defclass foo () ())
(sb-ext:finalize (find-class 'foo)
(lambda () (print "finalized")))
(sb-mop:
(sb-mop:
(setf (find-class 'foo) nil)
(sb-ext:gc :full t)
(sb-ext:gc :full t)
(sb-ext:gc :full t)
(sb-ext:gc :full t)
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
ff7c13ffe47bc6f 2d54ee086b3d6bf 25bdc53db0