[slim-vim] More details on the socket crash bug
Larry Clapp
larry at theclapp.org
Mon Jun 12 06:34:52 CDT 2006
On Sun, Jun 11, 2006 at 03:20:09PM -0700, Brad Beveridge wrote:
> A quick recap - the bug is this: When you evaluate a form on Swank
> it send back a reply via a socket. In Slim-vim we listen on that
> socket and print some data out to a Vim buffer. Eventually this
> crashes and leaves you with a broken console (keystrokes don't
> appear). I can blindly issue (cl-user::quit) and get to a bash
> prompt, I then need to "reset" the terminal.
>
> I spent today trying to reproduce the bug (see attached files for my
> attempt). Serverstream just listens on a socket and prints data to
> a buffer, test.lisp sends data to serverstream. I run these files
> in different Vims so that I can have 2 instances of ECL.
>
> I could not break this simple configuration, TEST can happily stream
> loads of data to SERVERSTREAM, which dutifully puts it out to a Vim
> buffer. This implies to me writing to a Vim buffer from the Async
> handler is completely fine.
>
> So I had a bit of a brain storm and thought about what is different
> between my test and Swank. Well, the test is kinda one way, Swank
> starts comms in Vim and responds to them in Vim. So I made the
> SERVERSTREAM also echo back any socket data to the TEST client.
> Whoa! It breaks.
I haven't tried your code yet, but I noticed this
(defmethod si::stream-write-string ((stream vim-buffer-output-stream) string &optional start end)
(append-lines (subseq string start end) (buffer-of stream)))
If START is NIL, subseq will throw an error. Just a thought.
-- L
More information about the slim-vim
mailing list