[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