[Bug-openmcl] asdf gensym problem

bryan o'connor bryan-openmcl at lunch.org
Sun Jul 31 23:56:45 MDT 2005


part of the problem is that i had polluted my image.  i
must have forgotten to turn off my init file when building
once.. that's why asdf and asdf1 were there in the first
place.

but.. that just answers why it started happening recently.

asdf uses make-package in a form like this:

(let ((*package* (make-package ...)))
   ...
   (load ...))

my guess is that this new package is meant to be
temporary so you don't pollute the current package.

changing the above to:

(let ((temp-package (make-package ...)))
   (let ((*package* temp-package))
     ...
     (load ...))
   (delete-package temp-package))

keeps my packages tidy.  save-application and reload
seems to put things back as is.

is there some other reason why there'd be a need for
a new package?


     ...bryan


On Jul 31, 2005, at 9:21 PM, Gary Byers wrote:

> On Sun, 31 Jul 2005, bryan o'connor wrote:
>
>> if asdf is used before gensym has been called for the
>> first time (*gensym-counter* is 0 or 1), it will sometimes
>> fail trying to make-package an existing package (asdf1).
>> the package name is generated with (gensym "asdf").
>
> I don't see how that could possibly work reliably.
>
> GENSYM will create dynamically unique symbols (by virtue of
> the fact that the symbols it creates are uninterned.)  It doesn't
> guarantee that symbols saved to FASL files in one session will
> have pnames that are distinct from symbols created in another
> session; I can't imagine how it could do that unless it could
> somehow guarantee that the *GENSYM-COUNTER*s of all images used
> to create FASL files that contained gensyms were somehow kept
> in synch (via some sort of distributed network GENSYM-COUNTER
> server, or via magic.)
>
> Since package names are compared via (something like) STRING=,
> using GENSYM to create unique package names can't work reliably.
> (It might work often enough that this bug would go unnoticed
> for a long time, but it seems clear to me that it's a bug.)
>
> I don't think that anything changed in the implementation of GENSYM
> (or in SAVE-APPLICATION's handling of it) recently, though I may be
> mistaken about that.  If there -were- some such change and we backed
> out of it, I'm fairly sure that we could construct a scenario where
> ASDF's use of GENSYM to name packages would also fail.


More information about the Bug-openmcl mailing list