Glenn Ehrlich <glenn.ehrlich <at> specastro.com> writes:
Edi Weitz <edi <at> agharta.de> writes:
On Wed, 29 Jun 2005 13:02:09 -0400, "Shawn Nicholson" <shawn.nicholson <at>
dnamerican.com> wrote:
My question can be disregarded. I see in the known problems document that this issue does not currently have a known reason or solution.
You might also want to search Gmane for a thread called "Problems with LWW FFI" or something like that. Martin Simmons there describes what he thinks is the underlying problem. No solution yet, though...
Cheers, Edi.
This is really weird. Before the July 3 CVS, SLIME hanged for me when calling FFI (using LispWorks 4.4.5 Personal Edition), but with the July 3 CVS, I can call foreign functions just fine from SLIME. This is with a DLL that was built with MS Visual C++ version 6.0 and MinGW, both built with default options, and not doing anything different than I had before.
I'd like to see this stay fixed :)
Edi asked me to try out the test.dll that appeared in this post:
http://article.gmane.org/gmane.lisp.slime.devel/2912
so I downloaded http://zappa.agharta.de/test.dll to a working directory, ,cd in the slime repl to that directory and did this:
CL-USER> (fli:register-module "test.dll") "test.dll" CL-USER> (fli:define-foreign-function foo ((x :int)) :result-type :int) FOO CL-USER> (foo 21) 42
So, the particulars are:
Windows 2000, SP4 "GNU Emacs 21.3.1 (i386-mingw-nt5.0.2195) of 2004-03-10 on NYAUMO" (the standard download from fsf) SLIME 2005-07-03 LispWorks 4.4.5 Personal Edition
Just checked on a cleaned out version of SLIME 2005-06-21 and test.dll also works.
In other messages in the same thread, doing: (capi:display-message "foo") is supposed to hang in a fresh SLIME as well, and for me, I get the message box.
I thought it might be because I called fli:register-module "test.dll"), but here's a fresh slime where I don't (I'm in some other directory other than c:/home/glenn):
; SLIME 2005-06-21 CL-USER> (fli:define-foreign-function foo ((x :int)) :result-type :int :module "c:/home/glenn/test.dll") FOO CL-USER> (foo 21) 42 CL-USER>
Just to be totally tedious, here's all of my slime related setup:
(require 'slime) (slime-setup :autodoc t) (add-hook 'lisp-mode-hook (lambda () (slime-mode t))) (add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t))) (define-key slime-mode-map [(control c) (control backspace)] 'cltl2-lookup) (setq common-lisp-hyperspec-root "file:///usr/local/doc/HyperSpec/") (define-key slime-mode-map [(control c) (s)] 'slime-selector)
(defun go-slime-lispworks () (interactive) (shell-command (expand-file-name "~/bin/start_lispworks.vbs")) (slime-connect "127.0.0.1" 4005))
I start up emacs, M-x go-slime-lispworks, which starts up lispworks via this VB script:
Dim Wsh Set Wsh = WScript.CreateObject("WScript.Shell")
rem Start LispWorks Wsh.Run("c:\lispworks\lispworks-personal-4450.exe")
rem Wait for a few seconds for it to start WScript.Sleep(5000)
rem Press the OK button on the splash screen Wsh.AppActivate "Upgrade LispWorks" Wsh.SendKeys "{ENTER}"
rem Load the SLIME startup code rem Wsh.AppActivate "LispWorks Personal Edition 4.4.5" Wsh.AppActivate "Listener 1" str = "load " & """c:/home/glenn/bin/slime.lisp""" WScript.Sleep(100) Wsh.SendKeys (str) Wsh.SendKeys "{ENTER}" WScript.Sleep(1000)
rem Toggle back to Emacs rem Wsh.SendKeys "%{TAB}"
The above script calls my ~/bin/slime.lisp:
(load "/usr/local/share/emacs/slime/swank-loader.lisp") (swank::create-swank-server 4005 :spawn #'swank::simple-announce-function t) (load "/usr/local/share/emacs/slime/present") (load "/home/glenn/.lispworks")
The .lispworks just does a bunch of asdf stuff and sets the compiler options.
Other than I was getting the hanging just last week, I can't explain why it's all of sudden working with 2 recent versions of slime.
Just another check, I was wondering if anything I was loading via asdf from my .lispworks was helping out, so I started a fresh LispWorks (not via my VB script), manually started up swank (just the 2 lines above, I didn't load present.lisp or my .lispworks). Then I did a slime-connect, and I still got a successful result.
For the life of me, I can't make it break at the moment.
Hope some of this might help.
Glenn