VSCode glibc++6 Needs Update?

Hi All,

I’m running Ubuntu 20.04.

I have been having problems with the Python extension in the VSCode snap. Essentially it wants glibc++6 version GLIBCXX_3.4.22. But the latest version from the snap is:

$ strings /snap/core/current/usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4 | tail -3
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21

… so no matching version here.

My /usr/lib/x86_64-linux-gnu/libstdc++.so.6 has the required version and all the way up to GLIBCXX_3.4.28. I’m not sure, but I think extensions run against the runtime of the snap. Is this correct?

If so, should the snap be updated to work with such extensions?

Thanks,

Matt

  • Ubuntu 20.04.2 LTS (focal)
  • core is currently using GLIBCXX_3.4.21 as shown above.
  • non-core libstdc++.so.6 contains GLIBCXX_3.4.28 as above.

Side note: snap node may also need the latest GLIBCXX version

Currently core is at 3.4…21
$ pwd
/snap/core/current/usr/lib/x86_64-linux-gnu
(atm) arrizza@john16:/snap/core/current/usr/lib/x86_64-linux-gnu$ strings libstdc++.so.6 | grep GLIBC

GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21

I also tried core/latest/edge which also only has 3.4.21

Why? When you create a node native module in C++ that module may use c++ functions only available in later versions of GLIBCXX. So node itself may be ok with 3.4.21 but native modules may use later versions.

Examples:

std::filesystem::current_path() which needs the latest GLIBCXX 3.4.28.

functions in uses GLIBCXX 3.4.22.

jsoncpp library uses GLIBCXX 3.4.26

perhaps vscode should be updated to use base: core20 (libc in core20 is 3.4.28) ?

$ snap info --verbose vscode | grep base
$ 

(it does not use any base, which means it falls back to “core”)

you should file an issue in the provided issue tracker url:

$ snap info --verbose vscode | grep ^contact
contact:   https://github.com/snapcrafters/vscode/issues
$

note that moving a snap forward to a new base can be a non-trivial task though …