code-server icon indicating copy to clipboard operation
code-server copied to clipboard

[Bug]: Argon2 Again

Open im-coder-lg opened this issue 3 years ago • 11 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

OS/Web Information

  • Web Browser: All
  • Local OS: All
  • Remote OS: All
  • Remote Architecture: ARM64 (maybe for now)
  • code-server --version: Latest

Steps to Reproduce

Prerequisite: Node 16 only

  1. Install via Yarn
  2. See Argon2 error

Expected

We are supposed to see a successful installation.

Actual

The bad old argon2 dependency error happens. We last saw this in #4422.

Logs

Logs can be found at this discussion: #5381

Screenshot/Video

At #5381

Does this issue happen in VS Code or GitHub Codespaces?

  • [X] I cannot reproduce this in VS Code.
  • [X] I cannot reproduce this in GitHub Codespaces.

Are you accessing code-server over HTTPS?

  • [X] I am using HTTPS.

Notes

I couldn't dig properly, but I think node-rs adopted a new problem, perhaps? @yisibl would love to hear your insight on this!

My notes will be continued in comments later on. My first point is this:

This was supposed to be fixed in #4733, and so it was - I personally tested it via Node 14 on my 32-bit Raspbian install. This is back now, which makes it weird. I am going to need a bit of time on this - sorry, but I have a lot of things up next, like August 15, I have a job to do for that, as well as some other things.

@jsjoeio and @bpmct you are the people I know who have RPis set up. Can you install Node and check it? My install via nvm seems to be screwed up.

@yisibl you suggested @node-rs/argon2, have you noticed anything going haywire in the build logs? Maybe we could start on these things as I also try on my Zorin installation on my computer.

im-coder-lg avatar Aug 09 '22 16:08 im-coder-lg

2022-08-09T16_30_58_095Z-debug-0.log That was my debug log. It seems something other than node-rs/argon2, but this could be potentially NPM package-destructing.

So, my knowledge gain was - AMD64 has another issue.

Please test on your Pis and tell your ideas here. We can't switch node-rs/argon2, it has worked splendidly for the past releases.

im-coder-lg avatar Aug 09 '22 16:08 im-coder-lg

First, thank you @im-coder-lg for testing and opening this! Looks semi-related to argon2. I will add this to high-priority list so we can take a look soon.

jsjoeio avatar Aug 09 '22 17:08 jsjoeio

I think we switched to node-rs/argon2 to fix this but then had an issue and had to switch back.

Related/possibly a dupe: https://github.com/coder/code-server/issues/4670

I have steps for resolution in there.

code-asher avatar Aug 19 '22 19:08 code-asher

Let me know if I can help. Looking at the older issues, it seems that the system you guys are using ships an ancient version of glibc. node-argon2 currently builds for ubuntu20.04 which ships glibc 2.31, so anything older than that will fail to link/load.

ranisalt avatar Aug 22 '22 23:08 ranisalt

So, it's mostly a problem in building the entire app, with an older glibc version? And all you have to do is make sure that npm packages are built on Ubuntu LTS with glibc 2.31, that's what you are saying? If this is the fix, I will personally test and code a nice workflow and PR it here.

im-coder-lg avatar Aug 23 '22 12:08 im-coder-lg

Let me know if I can help.

Will do! Really appreciate that.

Looking at the older issues, it seems that the system you guys are using ships an ancient version of glibc

@code-asher do you remember why we use an ancient version of glibc? I want to say something-something CentOS but can't recall.

jsjoeio avatar Aug 23 '22 16:08 jsjoeio

@im-coder-lg yes, essentially that. In the past, we had this problem with a hosting provider that used Ubuntu 16.04 (after it's EOL, mind you) and there was no way to support that.

argon2 ships prebuilt binaries built against glibc 2.31, so a system shipping glibc in any version >=2.3.1, <3 will be compatible, otherwise crashing occurs. It can't provide a version linked with an older glibc version because GitHub Actions provides Ubuntu 20.04 as the oldest distro.

What you need to do is ensure that the system executing argon2 either ships with a compatible glibc version, or builds from source - this requires gcc, make, node-gyp and other bulld tools.

@jsjoeio indeed CentOS 8.5 ships glibc 2.28 which is already too old.

ranisalt avatar Aug 23 '22 16:08 ranisalt

Yeah we have been reluctant to up the minimum glibc requirement since I think we had people on the product side using code-server on CentOS 7.

code-asher avatar Aug 24 '22 19:08 code-asher

IMO building from source sounds like it might be the best move for us at the moment.

code-asher avatar Aug 24 '22 19:08 code-asher

Yeah we have been reluctant to up the minimum glibc requirement since I think we had people on the product side using code-server on CentOS 7.

If you can confirm this data, I can try to build with an older distro, so it's compatible. There is no hard requirement to support newer distros :)

ranisalt avatar Aug 25 '22 18:08 ranisalt

If you can confirm this data, I can try to build with an older distro, so it's compatible.

That is super nice of you! Let me ping some folks internally and find out.

jsjoeio avatar Aug 29 '22 16:08 jsjoeio

Closing since we updated to CentOS 8 some time ago, and other changes around this were made, and if it is still a problem I think we need new investigation.

code-asher avatar Jul 11 '24 23:07 code-asher