Hi All,
2 days ago i'd checkouted fresh SLIME from git repo (http://github.com/nablaone/slime.git) and found out that SLDB with SBCL@win32 is broken. The trouble was when you enter to sldb and choose any restart, the inferior-lisp completely hangs (when i try to evaluate something in REPL the only i got was the message "the command is queued").
I've hacked abit into the code and found a workaround for this problem:
diff --git a/swank.lisp b/swank.lisp index b66af8a..35b879b 100644 --- a/swank.lisp +++ b/swank.lisp @@ -2534,6 +2534,7 @@ after Emacs causes a restart to be invoked." (handle-sldb-condition c)))))) (send-to-emacs `(:debug-return ,(current-thread-id) ,level ,*sldb-stepping-p*)) + #-(and sbcl win32) (wait-for-event `(:sldb-return ,(1+ level)) t) ; clean event-queue (when (> level 1) (send-event (current-thread) `(:sldb-return ,level)))))
I'm not sure whether this "patch" breaks something else but it's working for me.
WBR, Gleb Golubitsky
* Gleb Golubitsky [2009-06-11 10:21+0200] writes:
Hi All,
2 days ago i'd checkouted fresh SLIME from git repo (http://github.com/nablaone/slime.git) and found out that SLDB with SBCL@win32 is broken.
Technically, SBCL's READ-CHAR-NO-HANG is broken on Windows and apparently nobody is motivated to fix that.
The trouble was when you enter to sldb and choose any restart, the inferior-lisp completely hangs (when i try to evaluate something in REPL the only i got was the message "the command is queued").
I've hacked abit into the code and found a workaround for this problem:
diff --git a/swank.lisp b/swank.lisp index b66af8a..35b879b 100644 --- a/swank.lisp +++ b/swank.lisp @@ -2534,6 +2534,7 @@ after Emacs causes a restart to be invoked." (handle-sldb-condition c)))))) (send-to-emacs `(:debug-return ,(current-thread-id) ,level ,*sldb-stepping-p*))
- #-(and sbcl win32) (wait-for-event `(:sldb-return ,(1+ level)) t) ; clean event-queue (when (> level 1) (send-event (current-thread) `(:sldb-return ,level)))))
I'm not sure whether this "patch" breaks something else but it's working for me.
We don't allow this kind of conditional code in the portable parts of Swank. Implementation dependent stuff goes to swank-sbcl.lisp. In this case that means a patch for WAIT-FOR-INPUT would be more interesting.
Helmut.