Steel Bank Common Lisp

metaclass & recompilation issue

Reported by Nikodemus Siivola on 2011-03-30
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
SBCL
Undecided
Unassigned

Bug Description

This is not an actual test case--I at least could not reproduce this just now. The symptom went away, and I'm not sure why. ...but I just spent a while scratching my headed at an odd error, and figure the way it happened must have been *something* like this:

1. BKNR.DATASTORE compiled and loaded
2. Core dumped
3. Timestamps on source files jump without actual changes
4. New SBCL instance from the saved core.
5. Reload BKNR.DATASTORE--muchos recompilation due to the timestamps.
6. Exit SBCL.
7. Nuke core, new clean SBCL.
8. Load BKNR.DATASTORE from the compiled files.

...BOOM, trying to FIND-CLASSOID-CELL with :CREATE NIL during load of object.lisp, class PERSISTENT-EFFECTIVE-SLOT-DEFINITION doesn't exist.

description: updated
Changed in sbcl:
status: New → Incomplete
Stas Boukarev (stassats) wrote :

commit 993c261469bbf6201c6fae04fcdf255d38cf419d
Author: Stas Boukarev <email address hidden>
Date: Thu Oct 3 20:28:05 2013 +0400

    Forward referenced classoid-cells can now be loaded from FASLs.

    When
    (defun x (x)
      (typep x 'bar))

    (defclass bar ()
      ())

    is compiled twice, the typecheck is optimized and a classoid-cell is
    dumped into the FASL, but upon load in a new instance it's
    reconstructed using FIND-CLASSOID-CELL with :errorp t, resulting in an
    error, defeating the stated reason for indirection.

Changed in sbcl:
status: Incomplete → Fix Committed
Changed in sbcl:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers