kovisoft / slimv

Official mirror of Slimv versions released on vim.org
455 stars 60 forks source link

Slimv hangs after connecting to SWANK. #125

Closed elderK closed 11 months ago

elderK commented 1 year ago

Hey there Kovisoft,

First of all, I just wanted to say that I'm a giant fan of slimv and you've done an amazing job :)

I've been using slimv for many years although I've recently started experiencing some issues.

Vim seems to hang for some time after establishing a connection to SWANK. If you wait long enough, eventually a REPL window shows as we'd expect.

Unfortunately, when we enter any forms, everything just hangs for good. The only thing we can do is terminate the SWANK connection.

If you repeat the process enough, eventually things will start working.

To try and hunt this down, I enabled logging in the Python helper script. I found an error there that seemed to be repeated, an error response from SLIME: It can't find a thread called "repl-thread".

I'm not sure what's causing this: I'll generate a fresh log and post it here.

If there's anything you'd like me to do, to try and help debug the issue, feel free to let me know.

Note that I'm running Debian Linux (bookworm/sid), vim-gtk3 (9.0.1000-4) and sbcl (2.2.9-1).

I have a few other Vim plugins installed: I'll try removing them and see if it changes anything :)

Kind regards, David Ward

elderK commented 1 year ago

Logs generated by swank.py:

swank.log

elderK commented 1 year ago

I'll do some digging as to that missing package :)

elderK commented 1 year ago

Okay, I'm not sure why the package is missing. It seems SWANK is receiving the "require."

Interestingly, if I erase the FASL cache before each start-swank run, things work as you'd hope.

I'm using that as a workaround for now: Every time I start swank, I make sure to nuke ~/.slime first.

kovisoft commented 1 year ago

Thanks for the feedback. Let's find out if this is some kind of a timing issue or something else. Please try this:

If the above works, then it may be a timing issue: slimv does not wait long enough for (swank:swank-require 'swank-repl).

kovisoft commented 1 year ago

There were two swank-require calls when connecting the swank server. It seems to me from the logs you provided that the second one had some synchronization problems and did not wait the result of the first one. I made a change and merged the two swank-require calls to a single call. I hope this will fix the problem that you experienced.

Please check commit https://github.com/kovisoft/slimv/commit/48f21d04dc7f9732d04ffec101dfcf17b7f515cb

elderK commented 1 year ago

Hey @kovisoft,

I'm sorry for the delay: Life's been a little busy!

Thank you so much for looking into the issue.

I'll check your fix and let you know (soon) how it goes :)

Kind regards, Dave Ward

elderK commented 1 year ago

Hey @kovisoft ,

It fixes the problem for me! Nice work!

I'm curious why merging the requests solves the problem: Can contribs be loaded only once or something weird?

~Dave

kovisoft commented 1 year ago

Thanks for the feedback. I checked the logs you originally sent, and in the logs I saw that the first swank-require call (that loads the regular contribs) was not yet answered when the second swank-require call (that loads swank-repl) was issued. So it seemed that for some reason (TBH I did not investigate deeper why) slimv did not wait long enough for the response. The response time may be affected by the presence of FASL cache, but that's just a guess. Then I realized, that actually there is no need to have two separate swank-require calls, why not do everything together in one single call?