Hi!
Sometimes, in the middle of working on an application with SLIME (from CVS) and AllegroCL (7.0 beta) AllegroCL looses the ability to load a system with the ",l" shortcut. I usually start my sessions loading the system I'm currently working on and at this point it works fine but after a couple of breaks, backtraces and whatever it ceases to work. I'm afraid I can't provide an easy test case right now cause I'm in the middle of a project but maybe the attached backtrace is enought for the SLIME gurus.
Cheers, Edi.
No methods applicable for generic function #<STANDARD-GENERIC-FUNCTION SWANK-BACKEND:OPERATE-ON-SYSTEM> with args ("prodata" "LOAD-OP") of classes (STRING STRING) [Condition of type PROGRAM-ERROR]
Restarts: 0: [CONTINUE] Try calling it again 1: [ABORT] Abort SLIME compilation. 2: [ABORT] Abort handling SLIME request. 3: [ABORT] Abort entirely from this (lisp) process.
Backtrace: 0: (SWANK::DEBUG-IN-EMACS #<PROGRAM-ERROR @ #x721d29a2>) 1: ((FLET SWANK:SWANK-DEBUGGER-HOOK SWANK::DEBUG-IT)) 2: (SWANK:SWANK-DEBUGGER-HOOK #<PROGRAM-ERROR @ #x721d29a2> #<Function SWANK-DEBUGGER-HOOK>) 3: (CERROR "Try calling it again" PROGRAM-ERROR :FORMAT-CONTROL "No methods applicable for generic function ~s with args ~s of classes ~s" :FORMAT-ARGUMENTS (#<STANDARD-GENERIC-FUNCTION SWANK-BACKEND:OPERATE-ON-SYSTEM> ("prodata" "LOAD-OP") (STRING STRING))) 4: ((METHOD NO-APPLICABLE-METHOD (T)) #<STANDARD-GENERIC-FUNCTION SWANK-BACKEND:OPERATE-ON-SYSTEM> "prodata" "LOAD-OP") 5: ((:INTERNAL SWANK:OPERATE-ON-SYSTEM-FOR-EMACS 0)) 6: (SWANK::MEASURE-TIME-INTERVAL #<Closure (:INTERNAL SWANK:OPERATE-ON-SYSTEM-FOR-EMACS 0) @ #x721d28da>) 7: (SWANK::SWANK-COMPILER #<Closure (:INTERNAL SWANK:OPERATE-ON-SYSTEM-FOR-EMACS 0) @ #x721d28da>) 8: (SWANK:OPERATE-ON-SYSTEM-FOR-EMACS "prodata" "LOAD-OP") 9: (EVAL (SWANK:OPERATE-ON-SYSTEM-FOR-EMACS "prodata" "LOAD-OP")) 10: (SWANK::EVAL-FOR-EMACS (SWANK:OPERATE-ON-SYSTEM-FOR-EMACS "prodata" "LOAD-OP") NIL 104) 11: (FUNCALL SWANK::EVAL-FOR-EMACS (SWANK:OPERATE-ON-SYSTEM-FOR-EMACS "prodata" "LOAD-OP") NIL 104) 12: (SWANK::READ-FROM-EMACS) 13: ((:INTERNAL SWANK::HANDLE-REQUEST 0)) 14: (SWANK::CALL-WITH-REDIRECTED-IO #S(SWANK::CONNECTION :SOCKET-IO #<MULTIVALENT #2=stream socket #3=connected from #1=localhost/34550 to #1#/34551 @ #x71521512> :DEDICATED-OUTPUT #4=#<MULTIVALENT #2# #3#connected from #1#/34552 to #1#/34553 @ #x71521452> :USER-INPUT #<SWANK-BACKEND::SLIME-INPUT-STREAM @ #x7154e28a> :USER-OUTPUT #4# :USER-IO #<TWO-WAY-STREAM "" @ #x7154e27a> :READER-THREAD #<MULTIPROCESSING:PROCESS reader-thread(4) waiting for input @ #x7154e162> :CONTROL-THREAD #<MULTIPROCESSING:PROCESS control-thread(3) receive @ #x7154e182> :REPL-THREAD #<MULTIPROCESSING:PROCESS repl-thread(5) @ #x7154e142> :SERVE-REQUESTS #<Function SPAWN-THREADS-FOR-CONNECTION> :READ #<Function READ-FROM-CONTROL-THREAD> :SEND #<Function SEND-TO-CONTROL-THREAD> :CLEANUP NIL :INDENTATION-CACHE #<EQ hash-table with 46 entries @ #x715520b2> :INDENTATION-CACHE-PACKAGES (#<The ACL-SOCKET package> #<The ACLMOP package> #<The ANSI-LOOP package> #<The ASDF package> #<The ASDF2044 package> #<The ASDF2045 package> #<The ASDF2046 package> #<The ASDF2047 package> #<The ASDF2048 package> #<The ASDF2050 package> #<The ASDF2051 package> #<The ASDF2054 package> #<The ASDF2055 package> #<The ASDF2056 package> #<The ASDF2058 package> #<The ASDF2059 package> #<The ASDF2060 package> #<The CL-BASE64 package> #<The CL-BASE64-SYSTEM package> #<The CL-PPCRE package> #<The CL-PPCRE.SYSTEM package> #<The CL-WHO package> #<The CL-WHO.SYSTEM package> #<The CLSQL package> #<The CLSQL-POSTGRESQL package> #<The CLSQL-POSTGRESQL-SYSTEM package> #<The CLSQL-SYS package> #<The CLSQL-SYSTEM package> #<The CLSQL-UFFI package> #<The CLSQL-UFFI-SYSTEM package> #<The CLSQL-USER package> #<The CMUCL-COMPAT package> #<The COMMON-LISP package> #<The COMMON-LISP-CONTROLLER package> #<The COMMON-LISP-USER package> #<The COMPILER package> #<The CROSS-REFERENCE package> #<The DEBUGGER package> #<The DEFSYSTEM package> #<The EXCL package> #<The EXCL.OSI package> #<The EXCL.SCM package> #<The FOREIGN-FUNCTIONS package> #<The G2 package> #<The GARBAGE package> #<The INSPECT package> #<The KEYWORD package> #<The KMR-MOP package> #<The KMRCL package> #<The KMRCL-SYSTEM package> #<The LEP package> #<The LEP-IO package> #<The MAKE package> #<The MD5 package> #<The MD5-SYSTEM package> #<The MULTIPROCESSING package> #<The NET.URI package> #<The NREGEX package> #<The POSTGRESQL package> #<The PRODATA package> #<The PRODATA.SYSTEM package> #<The PROFILER package> #<The SWANK package> #<The SWANK-BACKEND package> #<The SWANK-COMPLETION-TEST package> #<The SWANK-IO-PACKAGE package> #<The SWANK-LOADER package> #<The SYSTEM package> #<The TBNL package> #<The TBNL-DUMMY package> #<The TBNL-SYSTEM package> #<The TOP-LEVEL package> #<The UFFI package> #<The UFFI-SYSTEM package> #<The URL-REWRITE package> #<The URL-REWRITE-SYSTEM package> #<The XMLS package> #<The XMLS-SYSTEM package>)) #<Function (:INTERNAL SWANK::HANDLE-REQUEST 0)>) 15: (SWANK::HANDLE-REQUEST #S(SWANK::CONNECTION :SOCKET-IO #<MULTIVALENT #2=stream socket #3=connected from #1=localhost/34550 to #1#/34551 @ #x71521512> :DEDICATED-OUTPUT #4=#<MULTIVALENT #2# #3#connected from #1#/34552 to #1#/34553 @ #x71521452> :USER-INPUT #<SWANK-BACKEND::SLIME-INPUT-STREAM @ #x7154e28a> :USER-OUTPUT #4# :USER-IO #<TWO-WAY-STREAM "" @ #x7154e27a> :READER-THREAD #<MULTIPROCESSING:PROCESS reader-thread(4) waiting for input @ #x7154e162> :CONTROL-THREAD #<MULTIPROCESSING:PROCESS control-thread(3) receive @ #x7154e182> :REPL-THREAD #<MULTIPROCESSING:PROCESS repl-thread(5) @ #x7154e142> :SERVE-REQUESTS #<Function SPAWN-THREADS-FOR-CONNECTION> :READ #<Function READ-FROM-CONTROL-THREAD> :SEND #<Function SEND-TO-CONTROL-THREAD> :CLEANUP NIL :INDENTATION-CACHE #<EQ hash-table with 46 entries @ #x715520b2> :INDENTATION-CACHE-PACKAGES (#<The ACL-SOCKET package> #<The ACLMOP package> #<The ANSI-LOOP package> #<The ASDF package> #<The ASDF2044 package> #<The ASDF2045 package> #<The ASDF2046 package> #<The ASDF2047 package> #<The ASDF2048 package> #<The ASDF2050 package> #<The ASDF2051 package> #<The ASDF2054 package> #<The ASDF2055 package> #<The ASDF2056 package> #<The ASDF2058 package> #<The ASDF2059 package> #<The ASDF2060 package> #<The CL-BASE64 package> #<The CL-BASE64-SYSTEM package> #<The CL-PPCRE package> #<The CL-PPCRE.SYSTEM package> #<The CL-WHO package> #<The CL-WHO.SYSTEM package> #<The CLSQL package> #<The CLSQL-POSTGRESQL package> #<The CLSQL-POSTGRESQL-SYSTEM package> #<The CLSQL-SYS package> #<The CLSQL-SYSTEM package> #<The CLSQL-UFFI package> #<The CLSQL-UFFI-SYSTEM package> #<The CLSQL-USER package> #<The CMUCL-COMPAT package> #<The COMMON-LISP package> #<The COMMON-LISP-CONTROLLER package> #<The COMMON-LISP-USER package> #<The COMPILER package> #<The CROSS-REFERENCE package> #<The DEBUGGER package> #<The DEFSYSTEM package> #<The EXCL package> #<The EXCL.OSI package> #<The EXCL.SCM package> #<The FOREIGN-FUNCTIONS package> #<The G2 package> #<The GARBAGE package> #<The INSPECT package> #<The KEYWORD package> #<The KMR-MOP package> #<The KMRCL package> #<The KMRCL-SYSTEM package> #<The LEP package> #<The LEP-IO package> #<The MAKE package> #<The MD5 package> #<The MD5-SYSTEM package> #<The MULTIPROCESSING package> #<The NET.URI package> #<The NREGEX package> #<The POSTGRESQL package> #<The PRODATA package> #<The PRODATA.SYSTEM package> #<The PROFILER package> #<The SWANK package> #<The SWANK-BACKEND package> #<The SWANK-COMPLETION-TEST package> #<The SWANK-IO-PACKAGE package> #<The SWANK-LOADER package> #<The SYSTEM package> #<The TBNL package> #<The TBNL-DUMMY package> #<The TBNL-SYSTEM package> #<The TOP-LEVEL package> #<The UFFI package> #<The UFFI-SYSTEM package> #<The URL-REWRITE package> #<The URL-REWRITE-SYSTEM package> #<The XMLS package> #<The XMLS-SYSTEM package>))) 16: ((:INTERNAL SWANK::REPL-LOOP 0)) 17: (SWANK::CALL-WITH-REDIRECTED-IO #S(SWANK::CONNECTION :SOCKET-IO #<MULTIVALENT #2=stream socket #3=connected from #1=localhost/34550 to #1#/34551 @ #x71521512> :DEDICATED-OUTPUT #4=#<MULTIVALENT #2# #3#connected from #1#/34552 to #1#/34553 @ #x71521452> :USER-INPUT #<SWANK-BACKEND::SLIME-INPUT-STREAM @ #x7154e28a> :USER-OUTPUT #4# :USER-IO #<TWO-WAY-STREAM "" @ #x7154e27a> :READER-THREAD #<MULTIPROCESSING:PROCESS reader-thread(4) waiting for input @ #x7154e162> :CONTROL-THREAD #<MULTIPROCESSING:PROCESS control-thread(3) receive @ #x7154e182> :REPL-THREAD #<MULTIPROCESSING:PROCESS repl-thread(5) @ #x7154e142> :SERVE-REQUESTS #<Function SPAWN-THREADS-FOR-CONNECTION> :READ #<Function READ-FROM-CONTROL-THREAD> :SEND #<Function SEND-TO-CONTROL-THREAD> :CLEANUP NIL :INDENTATION-CACHE #<EQ hash-table with 46 entries @ #x715520b2> :INDENTATION-CACHE-PACKAGES (#<The ACL-SOCKET package> #<The ACLMOP package> #<The ANSI-LOOP package> #<The ASDF package> #<The ASDF2044 package> #<The ASDF2045 package> #<The ASDF2046 package> #<The ASDF2047 package> #<The ASDF2048 package> #<The ASDF2050 package> #<The ASDF2051 package> #<The ASDF2054 package> #<The ASDF2055 package> #<The ASDF2056 package> #<The ASDF2058 package> #<The ASDF2059 package> #<The ASDF2060 package> #<The CL-BASE64 package> #<The CL-BASE64-SYSTEM package> #<The CL-PPCRE package> #<The CL-PPCRE.SYSTEM package> #<The CL-WHO package> #<The CL-WHO.SYSTEM package> #<The CLSQL package> #<The CLSQL-POSTGRESQL package> #<The CLSQL-POSTGRESQL-SYSTEM package> #<The CLSQL-SYS package> #<The CLSQL-SYSTEM package> #<The CLSQL-UFFI package> #<The CLSQL-UFFI-SYSTEM package> #<The CLSQL-USER package> #<The CMUCL-COMPAT package> #<The COMMON-LISP package> #<The COMMON-LISP-CONTROLLER package> #<The COMMON-LISP-USER package> #<The COMPILER package> #<The CROSS-REFERENCE package> #<The DEBUGGER package> #<The DEFSYSTEM package> #<The EXCL package> #<The EXCL.OSI package> #<The EXCL.SCM package> #<The FOREIGN-FUNCTIONS package> #<The G2 package> #<The GARBAGE package> #<The INSPECT package> #<The KEYWORD package> #<The KMR-MOP package> #<The KMRCL package> #<The KMRCL-SYSTEM package> #<The LEP package> #<The LEP-IO package> #<The MAKE package> #<The MD5 package> #<The MD5-SYSTEM package> #<The MULTIPROCESSING package> #<The NET.URI package> #<The NREGEX package> #<The POSTGRESQL package> #<The PRODATA package> #<The PRODATA.SYSTEM package> #<The PROFILER package> #<The SWANK package> #<The SWANK-BACKEND package> #<The SWANK-COMPLETION-TEST package> #<The SWANK-IO-PACKAGE package> #<The SWANK-LOADER package> #<The SYSTEM package> #<The TBNL package> #<The TBNL-DUMMY package> #<The TBNL-SYSTEM package> #<The TOP-LEVEL package> #<The UFFI package> #<The UFFI-SYSTEM package> #<The URL-REWRITE package> #<The URL-REWRITE-SYSTEM package> #<The XMLS package> #<The XMLS-SYSTEM package>)) #<Closure (:INTERNAL SWANK::REPL-LOOP 0) @ #x7154e302>) 18: (SWANK::REPL-LOOP #S(SWANK::CONNECTION :SOCKET-IO #<MULTIVALENT #2=stream socket #3=connected from #1=localhost/34550 to #1#/34551 @ #x71521512> :DEDICATED-OUTPUT #4=#<MULTIVALENT #2# #3#connected from #1#/34552 to #1#/34553 @ #x71521452> :USER-INPUT #<SWANK-BACKEND::SLIME-INPUT-STREAM @ #x7154e28a> :USER-OUTPUT #4# :USER-IO #<TWO-WAY-STREAM "" @ #x7154e27a> :READER-THREAD #<MULTIPROCESSING:PROCESS reader-thread(4) waiting for input @ #x7154e162> :CONTROL-THREAD #<MULTIPROCESSING:PROCESS control-thread(3) receive @ #x7154e182> :REPL-THREAD #<MULTIPROCESSING:PROCESS repl-thread(5) @ #x7154e142> :SERVE-REQUESTS #<Function SPAWN-THREADS-FOR-CONNECTION> :READ #<Function READ-FROM-CONTROL-THREAD> :SEND #<Function SEND-TO-CONTROL-THREAD> :CLEANUP NIL :INDENTATION-CACHE #<EQ hash-table with 46 entries @ #x715520b2> :INDENTATION-CACHE-PACKAGES (#<The ACL-SOCKET package> #<The ACLMOP package> #<The ANSI-LOOP package> #<The ASDF package> #<The ASDF2044 package> #<The ASDF2045 package> #<The ASDF2046 package> #<The ASDF2047 package> #<The ASDF2048 package> #<The ASDF2050 package> #<The ASDF2051 package> #<The ASDF2054 package> #<The ASDF2055 package> #<The ASDF2056 package> #<The ASDF2058 package> #<The ASDF2059 package> #<The ASDF2060 package> #<The CL-BASE64 package> #<The CL-BASE64-SYSTEM package> #<The CL-PPCRE package> #<The CL-PPCRE.SYSTEM package> #<The CL-WHO package> #<The CL-WHO.SYSTEM package> #<The CLSQL package> #<The CLSQL-POSTGRESQL package> #<The CLSQL-POSTGRESQL-SYSTEM package> #<The CLSQL-SYS package> #<The CLSQL-SYSTEM package> #<The CLSQL-UFFI package> #<The CLSQL-UFFI-SYSTEM package> #<The CLSQL-USER package> #<The CMUCL-COMPAT package> #<The COMMON-LISP package> #<The COMMON-LISP-CONTROLLER package> #<The COMMON-LISP-USER package> #<The COMPILER package> #<The CROSS-REFERENCE package> #<The DEBUGGER package> #<The DEFSYSTEM package> #<The EXCL package> #<The EXCL.OSI package> #<The EXCL.SCM package> #<The FOREIGN-FUNCTIONS package> #<The G2 package> #<The GARBAGE package> #<The INSPECT package> #<The KEYWORD package> #<The KMR-MOP package> #<The KMRCL package> #<The KMRCL-SYSTEM package> #<The LEP package> #<The LEP-IO package> #<The MAKE package> #<The MD5 package> #<The MD5-SYSTEM package> #<The MULTIPROCESSING package> #<The NET.URI package> #<The NREGEX package> #<The POSTGRESQL package> #<The PRODATA package> #<The PRODATA.SYSTEM package> #<The PROFILER package> #<The SWANK package> #<The SWANK-BACKEND package> #<The SWANK-COMPLETION-TEST package> #<The SWANK-IO-PACKAGE package> #<The SWANK-LOADER package> #<The SYSTEM package> #<The TBNL package> #<The TBNL-DUMMY package> #<The TBNL-SYSTEM package> #<The TOP-LEVEL package> #<The UFFI package> #<The UFFI-SYSTEM package> #<The URL-REWRITE package> #<The URL-REWRITE-SYSTEM package> #<The XMLS package> #<The XMLS-SYSTEM package>))) 19: ((:INTERNAL SWANK::SPAWN-THREADS-FOR-CONNECTION 2))
Edi Weitz edi@agharta.de writes:
Sometimes, in the middle of working on an application with SLIME (from CVS) and AllegroCL (7.0 beta) AllegroCL looses the ability to load a system with the ",l" shortcut. I usually start my sessions loading the system I'm currently working on and at this point it works fine but after a couple of breaks, backtraces and whatever it ceases to work. I'm afraid I can't provide an easy test case right now cause I'm in the middle of a project but maybe the attached backtrace is enought for the SLIME gurus.
I haven't been able to reproduce this in 6.2 yet. It irksomely brings to mind some comments of Helmut's in swank-allegro.lisp:
;; The following defitinions are workarounds for the buggy ;; no-applicable-method function in Allegro 5. We have to provide an ;; implementation.
What was the problem with no-applicable-method in Allegro 5? I wonder if it exists in later versions too?
Our `definterface' mechanism puts a method on the `no-applicable-method' generic function to supply a default implementation of `operate-on-system'. Since no backends use `defimplementation' to define a real method for `operate-on-system' it should always be handled by the `no-applicable-method' method.
But from the backtrace it kinda looks like our no-applicable-method has been lost somehow:
3: (CERROR "Try calling it again" PROGRAM-ERROR :FORMAT-CONTROL "No methods applicable for generic function ~s with args ~s of classes ~s" :FORMAT-ARGUMENTS (#<STANDARD-GENERIC-FUNCTION SWANK-BACKEND:OPERATE-ON-SYSTEM> ("prodata" "LOAD-OP") (STRING STRING))) 4: ((METHOD NO-APPLICABLE-METHOD (T)) #<STANDARD-GENERIC-FUNCTION SWANK-BACKEND:OPERATE-ON-SYSTEM> "prodata" "LOAD-OP") 5: ((:INTERNAL SWANK:OPERATE-ON-SYSTEM-FOR-EMACS 0))
Frame four is calling the no-applicable-method generic function, but apparently it's not using the method that we provided.
I'd like to get to the bottom of this, but I don't have any really good idea how. I'd like very much to reproduce it. It would be good to poke around in the inspector to see what methods NO-APPLICABLE-METHOD has and whether it's working right.
-Luke
Luke Gorrie luke@bluetail.com writes:
Our `definterface' mechanism puts a method on the `no-applicable-method' generic function to supply a default implementation of `operate-on-system'.
What on earth was I thinking when I wrote that code? :-)
Now the default implementation is just a regular method with all argument types being T. defimplementation uses the same signature so it will override it.
Possibly this will make some strange problems in some versions of ACL disappear.
-Luke