microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.92k stars 28.76k forks source link

check-requirements.sh script fails on certain devices that meet requirements. #204611

Closed kbirger closed 7 months ago

kbirger commented 7 months ago

Does this issue occur when all extensions are disabled?: Yes

The issue involves connecting to a host via SSH, and occurs when installing the updated version of vscode-server on the host. This worked with the same client/host on a previous version of VS Code.

Client Machine:

Version: 1.86.0 Commit: 05047486b6df5eb8d44b2ecd70ea3bdf775fd937 Date: 2024-01-31T10:29:11.933Z Electron: 27.2.3 ElectronBuildId: 26495564 Chromium: 118.0.5993.159 Node.js: 18.17.1 V8: 11.8.172.18-electron.0 OS: Darwin arm64 23.3.0

Host Machine:

Synology DS920+ OS: Linux slon 4.4.302+ #69057 SMP Mon Nov 13 14:19:30 CST 2023 x86_64 GNU/Linux synology_geminilake_920+

glibc info:

GNU C Library (GNU libc) stable release version 2.36.
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 12.2.0.
libc ABIs: UNIQUE IFUNC ABSOLUTE
Minimum supported kernel: 3.2.0

Steps to Reproduce:

  1. Install vs code and ssh remote extension
  2. connect to remote host running synology (ssh must be enabled on host, tcp forwarding enabled)

Connection fails with an error saying getconf: command not found because this distro does not ship with getconf, but nonetheless has the correct version of glibc and other dependencies.

This seems to come from the following line of code: https://github.com/microsoft/vscode/blob/main/resources/server/bin/helpers/check-requirements-linux.sh#L22

As a workaround, I've been able to create /tmp/vscode-skip-server-requirements-check and have a functioning setup. This confirms that the requirements are actually met.

Thoughts

It seems like the $BITNESS variable only matters for arm64 and aarch64 systems. It would make sense to rewrite the script to only do the check when it is necessary, in order to maximize compatibility.

I'm going through the script manually line by line to spot other issues. It's mostly fine on my host.

On some hosts, /etc/os-release may also not be present. (Such as Synology NAS, which is perfectly capable of running this software). It is only used to detect nixos and alpine linux. Perhaps this lookup can also be moved to the appropriate places for compatibility. Alternately, can't uname give this answer?

One other thing to note is the the libstdcpp versino detection. It seems to be incorrect. https://github.com/microsoft/vscode/blob/main/resources/server/bin/helpers/check-requirements-linux.sh#L74 Checks for a specific version 6.0.25, but will throw a warning if a newer version, such as 6.0.31 is reported on the lines above in the variable $libstdcpp_version

ericbodden commented 7 months ago

I am having the exact same problem. Thanks for raising this, otherwise I would have done the same.

VSCodeTriageBot commented 7 months ago

This bug has been fixed in the latest release of VS Code Insiders!

@kbirger, you can help us out by commenting /verified if things are now working as expected.

If things still don't seem right, please ensure you're on version a0b90ac5e04ea9a0733b68062253a469994e170e of Insiders (today's or later - you can use Help: About in the command palette to check), and leave a comment letting us know what isn't working as expected.

Happy Coding!

connor4312 commented 7 months ago

@deepak1556 are there steps for this? Seems like the default Alpine image has both getconf and /etc/os-release, so I'm not sure what I should test on.

deepak1556 commented 7 months ago

Issue requires a custom linux variant which I also don't have steps to verify, but the fix was verified in https://github.com/microsoft/vscode/issues/204745#issuecomment-1938459648 by another user on similar setup.

git-nico commented 7 months ago

The insiders build Is is working as expected for me. Tested it on a Synology DS918+, 4.4.302+ #69057 SMP Fri Jan 12 17:02:59 CST 2024 x86_64 GNU/Linux synology_apollolake_918+

lgu-appear commented 7 months ago

It doesn't work in my case. It keeps asking for what distribution is installed once the VSCode server is installed.

image image image

kbirger commented 7 months ago

/verified

Fr34k9 commented 6 months ago

Also not working for me (neither in vscode nor insiders). Only works if I add the file /tmp/vscode-skip-server-requirements-check

lgu-appear commented 6 months ago

Can we reopen that? @deepak1556

git-nico commented 6 months ago

related to #206533 ?

deepak1556 commented 6 months ago

Can confirm the issue with ssh setup, will track it in https://github.com/microsoft/vscode/issues/206533