Loading slime 2.27 going into debugger as of last night.

Martin Simmons martin at lispworks.com
Fri Mar 25 16:17:10 UTC 2022


Yes, I can repeat this in LispWorks after setting

(setq hcl:*handle-existing-defpackage* '(:error :modify))

I assume this is the same thing that sb-ext:*on-package-variance* is designed
to control.

It happens in v2.26.1 as well.

The problem is that defslimefun exports the fun name.  In swank-repl.lisp,
there is a defpackage followed by some defslimefun forms for names that are
not exported in the defpackage.

During compilation of swank-repl.lisp, the defpackage and exports are
evaluated at compile time.

During later compilation of swank-presentations.lisp, the previously compiled
swank-repl.lisp is loaded (this is hidden by a binding of *load-print*).

As a result, the defpackage is evaluated again with fewer exports than in the
current state of the package, which has undefined consequences according to
the ANSI CL standard (see
http://www.lispworks.com/documentation/HyperSpec/Body/m_defpkg.htm).

The only portable fix is to move the exports into the defpackage.

-- 
Martin Simmons
LispWorks Ltd
http://www.lispworks.com/



>>>>> On Thu, 24 Mar 2022 12:38:45 -0700, Jeff Cunningham said:
> 
> Another piece of information. I have a more or less identical production server which isn't having
> this problem. But I haven't run dist-upgrade on it recently. The latest version of slime it has is
> v2.26.1. It's running sbcl 2.2.1.
> 
> The system giving me trouble is v2.27 slime and 2.2.2 sbcl.
> 
> --Jeff
> 
> 
> 
> 
> On Thu, 24 Mar 2022 12:13:00 -0700
> Jeff Cunningham <jeffrey at jkcunningham.com> wrote:
> 
> > I asked this question over on sbcl-help already. Stas objected. So I'll ask it again here.
> > 
> > Last night I started running into the debugger when trying to start slime in emacs. This morning I
> > decided to delete all my .slime/ fasls, all of .cache/common-lisp/ all of ~/quicklisp and start
> > with a fresh copy of quicklisp.lisp. I updated my arch system (slightly newer version of emacs)
> > then tried to reinstall quicklisp. 
> > 
> > The problem occurs upstream of emacs ever being started. I can reproduce the problem with these
> > steps:
> > 
> > $ rm -rf .slime .cache/common-lisp/* quicklisp
> > $ curl -O https://beta.quicklisp.org/quicklisp.lisp
> > $ sbcl --load quicklisp.lisp
> > 
> > * (quicklisp-quickstart:install)
> > 
> > * (ql:quickload "quicklisp-slime-helper")
> > 
> > To load "quicklisp-slime-helper":
> >   Load 1 ASDF system:
> >     asdf
> >   Install 3 Quicklisp releases:
> >     alexandria quicklisp-slime-helper slime
> > ; Fetching #<URL "http://beta.quicklisp.org/archive/slime/2022-02-20/slime-v2.27.tgz">
> > ; 803.72KB
> > ==================================================
> > 823,006 bytes in 0.09 seconds (9273.62KB/sec)
> > ; Fetching #<URL
> > "http://beta.quicklisp.org/archive/alexandria/2022-02-20/alexandria-20220220-git.tgz"> ; 55.16KB
> > ==================================================
> > 56,486 bytes in 0.01 seconds (5516.21KB/sec)
> > ; Fetching #<URL
> > "http://beta.quicklisp.org/archive/quicklisp-slime-helper/2015-07-09/quicklisp-slime-helper-20150709-git.tgz">
> > ; 2.16KB ==================================================
> > 2,211 bytes in 0.00 seconds (0.00KB/sec)
> > ; Loading "quicklisp-slime-helper"
> > [package swank-loader]............................
> > [package swank/backend]...........................
> > [package swank/rpc]...............................
> > [package swank/match].............................
> > [package swank-mop]...............................
> > [package swank]...................................
> > [package swank/source-path-parser]................
> > [package swank/source-file-cache].................
> > [package swank/sbcl]..............................
> > [package swank/gray]..............................
> > ........
> > ; compiling file
> > "/home/jcunningham/quicklisp/dists/quicklisp/software/slime-v2.27/contrib/swank-util.lisp"
> > (written 24 MAR 2022 12:08:30 PM): .
> > 
> > ; wrote /home/jcunningham/.slime/fasl/2.27/sbcl-2.2.2-linux-x86-64/contrib/swank-util.fasl
> > ; compilation finished in 0:00:00.010
> > ; compiling file
> > "/home/jcunningham/quicklisp/dists/quicklisp/software/slime-v2.27/contrib/swank-repl.lisp"
> > (written 24 MAR 2022 12:08:30 PM): ......................................... [package
> > swank-repl]..
> > 
> > ; wrote /home/jcunningham/.slime/fasl/2.27/sbcl-2.2.2-linux-x86-64/contrib/swank-repl.fasl
> > ; compilation finished in 0:00:00.040
> > ; compiling file
> > "/home/jcunningham/quicklisp/dists/quicklisp/software/slime-v2.27/contrib/swank-c-p-c.lisp"
> > (written 24 MAR 2022 12:08:30 PM): .
> > 
> > ; wrote /home/jcunningham/.slime/fasl/2.27/sbcl-2.2.2-linux-x86-64/contrib/swank-c-p-c.fasl
> > ; compilation finished in 0:00:00.030
> > ; compiling file
> > "/home/jcunningham/quicklisp/dists/quicklisp/software/slime-v2.27/contrib/swank-arglists.lisp"
> > (written 24 MAR 2022 12:08:30 PM): ................
> > 
> > ; wrote /home/jcunningham/.slime/fasl/2.27/sbcl-2.2.2-linux-x86-64/contrib/swank-arglists.fasl
> > ; compilation finished in 0:00:00.360
> > ; compiling file
> > "/home/jcunningham/quicklisp/dists/quicklisp/software/slime-v2.27/contrib/swank-fuzzy.lisp"
> > (written 24 MAR 2022 12:08:30 PM): ...
> > 
> > ; wrote /home/jcunningham/.slime/fasl/2.27/sbcl-2.2.2-linux-x86-64/contrib/swank-fuzzy.fasl
> > ; compilation finished in 0:00:00.080
> > ; compiling file
> > "/home/jcunningham/quicklisp/dists/quicklisp/software/slime-v2.27/contrib/swank-fancy-inspector.lisp"
> > (written 24 MAR 2022 12:08:30 PM): ........ .
> > 
> > ; wrote
> > /home/jcunningham/.slime/fasl/2.27/sbcl-2.2.2-linux-x86-64/contrib/swank-fancy-inspector.fasl ;
> > compilation finished in 0:00:00.163 ; compiling file
> > "/home/jcunningham/quicklisp/dists/quicklisp/software/slime-v2.27/contrib/swank-presentations.lisp"
> > (written 24 MAR 2022 12:08:30 PM): ;; ;; Error compiling
> > /home/jcunningham/quicklisp/dists/quicklisp/software/slime-v2.27/contrib/swank-presentations.lisp:
> > ;;   SWANK-REPL also exports the following symbols: ;;   (SWANK-REPL:CREATE-REPL
> > SWANK-REPL:LISTENER-GET-VALUE ;;    SWANK-REPL:CLEAR-REPL-VARIABLES SWANK-REPL:LISTENER-SAVE-VALUE
> > ;;    SWANK-REPL:LISTENER-EVAL SWANK-REPL:REDIRECT-TRACE-OUTPUT)
> > ;; See also:
> > ;;   The ANSI Standard, Macro DEFPACKAGE
> > ;; 
> > 
> > debugger invoked on a SB-INT:PACKAGE-AT-VARIANCE-ERROR in thread
> > #<THREAD "main thread" RUNNING {10019B0073}>:
> >   SWANK-REPL also exports the following symbols:
> >   (SWANK-REPL:CREATE-REPL SWANK-REPL:LISTENER-GET-VALUE
> >    SWANK-REPL:CLEAR-REPL-VARIABLES SWANK-REPL:LISTENER-SAVE-VALUE
> >    SWANK-REPL:LISTENER-EVAL SWANK-REPL:REDIRECT-TRACE-OUTPUT)
> > See also:
> >   The ANSI Standard, Macro DEFPACKAGE
> > 
> > Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
> > 
> > restarts (invokable by number or by possibly-abbreviated name):
> >   0: [DROP-THEM                    ] Unexport them.
> >   1: [KEEP-THEM                    ] Keep exporting them.
> >   2: [TRY-RECOMPILING              ] Recompile swank-loader and try loading it again
> >   3: [RETRY                        ] Retry
> >                                      loading FASL for #<SWANK-LOADER-FILE "swank" "swank-loader">.
> >   4: [ACCEPT                       ] Continue, treating
> >                                      loading FASL for #<SWANK-LOADER-FILE "swank" "swank-loader">
> >                                      as having been successful.
> >   5:                                 Retry ASDF operation.
> >   6: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the
> >                                      configuration.
> >   7:                                 Retry ASDF operation.
> >   8:                                 Retry ASDF operation after resetting the
> >                                      configuration.
> >   9: [ABORT                        ] Give up on "quicklisp-slime-helper"
> >  10: [REGISTER-LOCAL-PROJECTS      ] Register local projects and try again.
> >  11:                                 Exit debugger, returning to top level.
> > 
> > (SB-IMPL::NOTE-PACKAGE-VARIANCE :FORMAT-CONTROL "~A also exports the following symbols:~%  ~S"
> > :FORMAT-ARGUMENTS ("SWANK-REPL" (SWANK-REPL:CREATE-REPL SWANK-REPL:LISTENER-GET-VALUE
> > SWANK-REPL:CLEAR-REPL-VARIABLES SWANK-REPL:LISTENER-SAVE-VALUE SWANK-REPL:LISTENER-EVAL
> > SWANK-REPL:REDIRECT-TRACE-OUTPUT)) :PACKAGE #<PACKAGE "SWANK-REPL">) 0] 
> > 
> > 
> > Neither locate nor find show any signs of any other copy of swank or slime on this system. The
> > only thing in my .sbclrc is this:
> > 
> > ;;; The following lines added by ql:add-to-init-file:
> > ;;#-quicklisp
> > (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))))
> >   (when (probe-file quicklisp-init)
> >     (load quicklisp-init)))
> > 
> > ;;; Added this to test reading bad char streams
> > (setf sb-impl::*default-external-format* :utf-8)
> > 
> > ;;; Added this so I can change the names of package symbols and get
> > ;;; prompted about whether or not I want to drop them:
> > (setf sb-ext:*on-package-variance* '(:error t))
> > 
> > 
> > I'm running out of ideas. Does anyone have any?
> > 
> > Thanks.
> > 
> > --Jeff
> > 
> > 
> > 
> 
> 



More information about the slime-devel mailing list