Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Does not work on windows #2388

Closed
JSH32 opened this issue Dec 2, 2020 · 30 comments
Closed

Does not work on windows #2388

JSH32 opened this issue Dec 2, 2020 · 30 comments
Labels
bug Something isn't working os-windows Windows related
Milestone

Comments

@JSH32
Copy link

JSH32 commented Dec 2, 2020

When trying to access code-server through the proxy It is unable to load any of the extensions and checking the log shows the results below.
Screenshot
This does not happen when I try to access it from my ubuntu laptop, it only fails on Windows.

  • Web Browser: Chrome
  • Local OS: Windows
  • Remote OS: Ubuntu 20.04
  • Remote Architecture: x64
  • code-server --version: 3.7.3 93fb76e
@JSH32
Copy link
Author

JSH32 commented Dec 2, 2020

I have tested this on all browsers including Firefox. The same issue occurs only specifically on windows.

@code-asher code-asher added bug Something isn't working needs-investigation os-windows Windows related labels Dec 2, 2020
@JSH32
Copy link
Author

JSH32 commented Dec 3, 2020

I have just updated to 3.7.4, the same bug occurs, I am somewhat inclined to believe this is because of windows firewall but it uses standard ports so I have become more confused. Looking into the issue I am seeing a few new errors pop up.
Screenshot
On ubuntu the sourcemap is also not found but the ExtensionHost loads and shows the entire output of plugins being initialized. It seems to be failing on this block of code

this._proxy = this._extensionHost.start()!.then(
			(protocol) => {
				this._hasStarted = true;
				return { value: this._createExtensionHostCustomers(protocol) };
			},
			(err) => {
				console.error('Error received from starting extension host');
				console.error(err);
				return null;
			}
		);

_extensionHost appears to be implementing interface IExtensionHost. I am guessing that the method .start() of this interface is was originally platform specific VSCode code that code-server is yet to replace or has accidentally allowed to use.
Hopefully this provides some kind of help on how this issue can be fixed.

@code-asher
Copy link
Member

The source map is a bug; I'll be fixing that soon but it shouldn't cause any issues.

I tried using Chrome+Windows accessing 3.7.3 running on a Linux host but everything connected and I'm able to use it normally (all done locally).

Could you run with --log debug then post the browser logs and code-server's stdout?

@JSH32
Copy link
Author

JSH32 commented Dec 4, 2020

After a few times of it failing to login and retrying the logs are

[2020-12-04T00:06:17.802Z] debug forking vs code...
[2020-12-04T00:06:18.095Z] debug setting up vs code...
debug vscode got message from code-server {"type":"init"}
debug vscode got message from code-server {"type":"socket"}
debug vscode New connection {"token":"this is something"}
[2020-12-04T00:06:22.735Z] debug got latest version {"latest":"3.7.4"}
[2020-12-04T00:06:22.737Z] debug comparing versions {"current":"3.7.4","latest":"3.7.4"}
debug vscode got message from code-server {"type":"socket"}
debug vscode New connection {"token":"this is different than the last"}
debug vscode got message from code-server {"type":"socket"}
debug vscode got message from code-server {"type":"socket"}
debug vscode got message from code-server {"type":"socket"}
debug vscode got message from code-server {"type":"socket"}

@JSH32
Copy link
Author

JSH32 commented Dec 4, 2020

I have also tested not using the coder proxy. It loads perfectly when directly connecting.

@code-asher
Copy link
Member

code-asher commented Dec 4, 2020 via email

@code-asher
Copy link
Member

code-asher commented Dec 4, 2020

Oh I misread, you're using the coder cloud proxy with --link?

@code-asher
Copy link
Member

I tried out --link and accessed from a Windows machine (with Chrome) but haven't been able to replicate the problem yet.

@JSH32
Copy link
Author

JSH32 commented Dec 4, 2020

I used --link yes

@code-asher
Copy link
Member

code-asher commented Dec 7, 2020 via email

@L3P3
Copy link
Contributor

L3P3 commented Dec 8, 2020

My server is debian bullseye, I just upgraded to latest code-server version, from the version I installed a month ago. My client is Windows XP, latest Firefox. When I open the page, I get an error message dialog telling me that it was unable to connect and I need to reload the page. Does not help thou. No idea if this issue is related.
Should I post more information here or create a new issue?

@nhooyr
Copy link
Contributor

nhooyr commented Dec 8, 2020

@L3P3 Seems related feel free to drop more info in this issue.

@L3P3
Copy link
Contributor

L3P3 commented Dec 8, 2020

My issue is independent of Windows. When I open the page on debian, I get the same issue. One thing I noticed:
I upgraded (installed the new .deb file over the previous version) but when I open the page, it still shows me the previous version there. I tried to stop the service, killall code-server but still, I can open the page and it shows the old version. I am rebooting my server now.

@nhooyr
Copy link
Contributor

nhooyr commented Dec 8, 2020

Hmm, try resetting your cache as well!

@L3P3
Copy link
Contributor

L3P3 commented Dec 8, 2020

It worked by restarting my server. The old server process was not properly killed when I installed the new package over it.

@L3P3
Copy link
Contributor

L3P3 commented Dec 8, 2020

Nope. It shows up the new version but still disconnects, no matter if my client is Windows or not.

@nhooyr
Copy link
Contributor

nhooyr commented Dec 8, 2020

Nooo!! I was excited.

@L3P3
Copy link
Contributor

L3P3 commented Dec 8, 2020

Now it is working again... I stopped the systemd service and instead ran code-server in terminal. It works now. But I will have to see how long.

@L3P3
Copy link
Contributor

L3P3 commented Dec 8, 2020

It also works when I open the page from Firefox running in Windows. Maybe I misunderstood the issue here.

@JSH32
Copy link
Author

JSH32 commented Dec 12, 2020

How would I submit my browser log, it is still happening even though I have reinstalled windows. Exactly the screenshot above.

@code-asher
Copy link
Member

code-asher commented Dec 14, 2020 via email

@JSH32
Copy link
Author

JSH32 commented Dec 14, 2020

New information, I have tried it on a computer that is not mine with the same install of windows and the issue was resolved, it is weird that it happens even after a reinstall though.

@code-asher
Copy link
Member

code-asher commented Dec 15, 2020 via email

@JSH32
Copy link
Author

JSH32 commented Dec 15, 2020

It was on a different network, I originally suspected windows firewall but it was the same version of windows, theirs was not a fresh install though. It works on other operating systems on my network.

@jsjoeio jsjoeio added this to the Backlog milestone Apr 29, 2021
@shayne
Copy link
Contributor

shayne commented Jun 29, 2021

I've been able to reproduce this issue. I have code-server running in the cloud, accessed via private IP over a WireGuard connection.

My local subnet is 10.2.0.0/16 and my remote private subnet is 10.3.0.0/16. Hosting cloud-server within the local 10.2.X.X subnet works fine, accessing via 10.3.X.X with default Windows Firewall (connection set to Private) results in the reconnect error.

I can reproduce the issue by turning off the Windows Firewall and loading code-server. The connection comes up right away and extensions start running. Note: after this initial connection code-server will continue to work for some time after re-enabling the firewall. I believe this is due to connection state tracking.

I turned on logging and didn't see any related DROP messages. I'm continuing to look into the issue. Ideally I'd like to find a solution that doesn't involve modifying the firewall for each client.

Ideas?

@L3P3
Copy link
Contributor

L3P3 commented Jun 29, 2021

Yes, the Windows Firewall as most is stateful so it memorizes outgoing connections for a while to let replies in. Maybe there is a message from the server to the client after a too long delay. Maybe more frequent pings from the client to the server could fix the issue. But I am just roughly guessing, I am not an expert in sockets and firewalls at all. 😉

@jsjoeio
Copy link
Contributor

jsjoeio commented Jun 29, 2021

I haven't used Windows in a long time so not the expert here but maybe @code-asher has some ideas

@shayne
Copy link
Contributor

shayne commented Jun 29, 2021

I've got it working without modifying the Windows Firewall.

I'm not sure the exact issue, but I'll share my findings and the fix here in hopes it sheds light or helps someone else.

I ran Wireshark to see what was going on when loading code-server in the browser. One thing that stood out to me were the repeated ICMP Redirects. These caused by having a static route directing traffic to my remote subnet 10.3.0.0/16.

To avoid the redirect I added a static route to my machine that bypassed my router. To my surprise code-server made connection and extensions fired up. It worked.

So two things: 1) it appears as if Windows Firewall ignores the redirects by default and doesn't modify the local route table; 2) code-server wasn't liking the redirect or going through the router for the extension host connection.

I modified my DHCP server to hand out static routes using the DHCP option "121" and providing the hex encoded string of routes. It's working fine now.

I'll also note that I use many other services (web, ssh, routing, etc...) on the 10.3.X.X network and haven't experienced any issues up until this code-server bug.

@code-asher
Copy link
Member

code-asher commented Jun 30, 2021 via email

@stale
Copy link

stale bot commented Dec 27, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no activity occurs in the next 5 days.

@stale stale bot added the stale label Dec 27, 2021
@stale stale bot closed this as completed Jan 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working os-windows Windows related
Projects
None yet
Development

No branches or pull requests

6 participants