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

VS Code not working on Ubuntu when connected using XRDP. #3451

Closed
hannesne opened this issue Feb 25, 2016 · 120 comments
Closed

VS Code not working on Ubuntu when connected using XRDP. #3451

hannesne opened this issue Feb 25, 2016 · 120 comments
Assignees
Labels
electron Issues and items related to Electron help wanted Issues identified as good community contribution opportunities linux Issues with VS Code on Linux remote-desktop upstream Issue identified as 'upstream' component related (exists outside of VS Code) upstream-issue-linked This is an upstream issue that has been reported upstream

Comments

@hannesne
Copy link
Member

Hi, it seems like the bug with either Atom or XRDP discussed in Atom issue here: atom/atom#4360 is keeping VSCode from working in Ubuntu when you connect to it with RDP.
Trying to launch the app gives the following output:

Xlib: extension "XInputExtension" missing on display ":10.0".
Xlib: extension "XInputExtension" missing on display ":10.0".
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /home/hannesne/.drirc: No such file or directory.
libGL: Can't open configuration file /home/hannesne/.drirc: No such file or directory.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
Xlib: extension "XInputExtension" missing on display ":10.0".
Xlib: extension "XInputExtension" missing on display ":10.0".
[ , [Error: channel closed] ]

This happens regardless of using the MATE or LFCE desktop.
An output of GLXInfo gives the following:

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
name of display: :10.0
display: :10 screen: 0
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile,
GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.2
GLX extensions:
GLX_ARB_get_proc_address, GLX_EXT_import_context, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_MESA_multithread_makecurrent
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.3 Mesa 4.0.4
OpenGL extensions:
GL_ARB_imaging, GL_ARB_multitexture, GL_ARB_texture_border_clamp,
GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_dot3,
GL_ARB_transpose_matrix, GL_EXT_abgr, GL_EXT_blend_color,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_draw_range_elements,
GL_EXT_multi_draw_arrays, GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_lod_bias, GL_SGIS_texture_border_clamp,
GL_SUN_multi_draw_arrays

8 GLX Visuals
visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav

id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat

0x024 24 tc 1 24 0 r y . 8 8 8 0 . . 0 16 0 0 0 0 0 0 0 None
0x025 24 tc 1 24 0 r y . 8 8 8 0 . . 0 16 8 16 16 16 0 0 0 None
0x026 24 tc 1 24 0 r y . 8 8 8 8 . . 0 16 8 16 16 16 16 0 0 None
0x027 24 tc 1 24 0 r . . 8 8 8 8 . . 0 16 8 16 16 16 16 0 0 None
0x028 24 dc 1 24 0 r y . 8 8 8 0 . . 0 16 0 0 0 0 0 0 0 None
0x029 24 dc 1 24 0 r y . 8 8 8 0 . . 0 16 8 16 16 16 0 0 0 None
0x02a 24 dc 1 24 0 r y . 8 8 8 8 . . 0 16 8 16 16 16 16 0 0 None
0x02b 24 dc 1 24 0 r . . 8 8 8 8 . . 0 16 8 16 16 16 16 0 0 None

Any suggestions?

@Tyriar Tyriar added help wanted Issues identified as good community contribution opportunities linux Issues with VS Code on Linux labels Mar 10, 2016
@roterdam
Copy link

Open up ''/usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0'' and remove BIG_EXTENSIONS to something else like FIG_EXTENSIONS.

sudo vi /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
s/BIG_EXTENSIONS/FIG_EXTENSIONS

This is a total hack, but it does work.

@Tyriar maybe you can put this in your release notes or something. The reason is that XRDP only works with Ubuntu MATE (or XFCE, etc.) lighter weight desktops, and there this BIG REQUEST thing doesn't seem to work.

@Tyriar
Copy link
Member

Tyriar commented Apr 4, 2016

Same issue tracked in atom atom/atom#4360, here's the upstream electron issue electron/electron#2256

@Tyriar Tyriar added upstream Issue identified as 'upstream' component related (exists outside of VS Code) bug Issue identified by VS Code Team member as probable bug and removed help wanted Issues identified as good community contribution opportunities labels Apr 4, 2016
@joeaudette
Copy link

@roterdam I'm facing this problem with vscode 1.0.0 on ubuntu 14.4 LTS but when I try to edit the file as you indicated with vi, it says pattern not found

@joeaudette
Copy link

for anyone else encountering this, I worked around this problem by uninstalling xrdp and installing tigervnc on my ubuntu box, then I installed tightvnc viewer on my windows 10 box and now when I remote in vscode works for me. rdp seems a little nicer to me than vnc so hoping maybe when ubuntu 16 LTS comes out I can change back to rdp

@roterdam
Copy link

@joeaudette that sucks. did you make sure it was case sensitive? vnc is not as performant. Same issue in 16.04 LTS I just tried. Damn Ubuntu. It works fine on Fedora 22.

@joeaudette
Copy link

@roterdam yes I tried lower and upper case but it could not find any match. tried also looking for BIG_REQUEST, big_request, BIG-REQUEST per the similar atom issue but no variants I tried could be found.

strangely while atom and electron bugs are still open some are saying it works fine with rdp using atom 1.5.4, so wondering what version of electron is used for vscode 1.0.0, maybe it is working in the latest version

vnc performance seems ok to me since I'm just using it on a local network, I had to futz around with display settings to get a good experience whereas rdp seemed to automatically scale the screen just right for me.

@Tyriar
Copy link
Member

Tyriar commented Apr 22, 2016

@joeaudette I believe the latest insiders build was upgraded to Electron 0.37.6 (#5378) 2 days ago.

@AlexZeitler
Copy link

Just updated to the latest Insiders build on Ubuntu 14.04. Still doesn't work via RDP.

@groone
Copy link

groone commented May 8, 2016

Hack worked vscode works via xrdp in Ubuntu MATE 16.04:

  • make a backup first
  • sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' /usr/lib/x86_64-linux-gnu/libxcb.so.1

@joeaudette
Copy link

@groone Thanks! will give that a try soon

@knockshore
Copy link

@groone Thanks. it worked.

@AdonousTech
Copy link

@groone Thanks! This worked for me as well.

@ctaggart
Copy link

ctaggart commented Jun 8, 2016

That worked for X2go on Debian Jessie as well. 👍

@msouga
Copy link

msouga commented Jun 10, 2016

Thanks a lot it worked for me too on Ubuntu 14.04 TLS

@emseedee
Copy link

Thanks - also worked for me - I can now use Atom over XRDP on Debian Jessie 8.5.0

@nicholi
Copy link

nicholi commented Jun 14, 2016

The hack "works" (x2go via LXDE) but then seems to break other apps like VLC for me (under normal desktop login, nothing remote).

@rcarmo
Copy link

rcarmo commented Jun 20, 2016

There is a much cleaner workaround that won't break other apps:

# make a copy of the relevant library
mkdir ~/lib
cp /usr/lib/x86_64-linux-gnu/libxcb.so.1 ~/lib
sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' ~/lib/libxcb.so.1
# set the dynamic loader path to put your library first before executing VS Code
LD_LIBRARY_PATH=$HOME/lib code

Obviously, you can tweak your .desktop files and other launchers to set the environment variable solely for VS Code. Go to /usr/share/applications/code.desktop, copy it to ~/.gnome/apps (or wherever your desktop manager likes it) and change the Exec line to read something like:

Exec=sh -c "env LD_LIBRARY_PATH\=\$HOME/lib  /usr/share/code/code" %U

The sh -c makes sure the command is evaluated and variables expanded, and env sets the variable itself. This is not very pretty, but not all desktop managers handle environment variables inside .desktop files the same way, so it's a sort of belt and suspenders approach.

I just tested this on Xenial (Ubuntu 16.04) inside vnc4server. Of course the real issue needs to be fixed upstream in Electron (I have to wonder why they don't have cleaner fallbacks for lack of graphics acceleration...)

@k-y
Copy link

k-y commented Jun 20, 2016

Worked on CentOS 7 on x2go ; TYVM for this tip!

@AlexZeitler
Copy link

@rcarmo Thanks for the tip but it doesn't work (the tips above don't work neither). XRDP to Ubuntu Mate on Ubuntu Server running in AWS.

@AlexZeitler
Copy link

I just located the directory using dpkg -L visual-studio-code which pointed me to /usr/share/code.
After copying the modified version of libxcb.so.1 into that directory, I was able to start Code (but only works if I start it from /usr/share/code not by just typing code everywhere.

@MaximoTrinidad
Copy link

  • VSCode Version: 1.5.2 Linux deb version
  • OS Version: Windows 10 Pro Insider Preview
  • Remote Connection to: Ubuntu 16.04.1 LTS Desktop
  • Linux xrdp: Xfce-session

Steps to Reproduce:

  1. On Windos 10, open Remote Desktop application
  2. Connect to Linux machine using IP Address provided.
  3. At the Xfec session, click on "Applications | Development | Visual Studio Code"

Results:
Nothing opens

Provide VS Code Verbose results:
maxt@orion:~$ code --verbose
Xlib: extension "XInputExtension" missing on display ":10.0".
(4:29:39 PM) ### VSCode main.js ###
(4:29:40 PM) /usr/share/code/resources/app { _: [],
paths: [],
performance: false,
verbose: true,
debugPluginHost: undefined,
debugBrkPluginHost: undefined,
logExtensionHostCommunication: false,
'new-window': false,
'reuse-window': false,
goto: false,
diff: false,
extensionHomePath: undefined,
extensionDevelopmentPath: undefined,
extensionTestsPath: undefined,
'disable-extensions': false,
locale: undefined,
wait: false }
Xlib: extension "XInputExtension" missing on display ":10.0".
Xlib: extension "XInputExtension" missing on display ":10.0".

Try Workaround from:
#3451
#9016
#11873

Changing both '/usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0' and '/usr/lib/x86_64-linux-gnu/libxcb.so.1'
information: 's/BIG-REQUESTS/_IG-REQUESTS/' -> Didn't work!

This issue shouldn't be resolved with a workaround. It VS Code should work like JetBrains Python Editor "PC PyCharm" in a xrdp session.

pycharm_2016-09-18_18-10-30

See attached image:
vscode_notremoting_2016-09-18_17-43-13

@deckar01
Copy link

Use code --user-data-dir=/tmp/remote.

$ code --help
...
  --user-data-dir <dir>             Specifies the directory that user data is
                                    kept in. Can be used to open multiple
                                    distinct instances of Code.
...

I'm sure they just pass it through to chromium, because I have to use the same flag for it when using xrdp with multiple sessions.

https://chromium.googlesource.com/chromium/src.git/+/master/docs/user_data_dir.md

@vitaly-zverev
Copy link

#86372 (comment)
The above link works, but I got annoyed with updates breaking it so I have a modified the non-snap solution to work via LD_PRELOAD instead of LD_LIBRARY_PATH and it works.
create the modified lib

  • mkdir ~/lib
  • cp /usr/lib/x86_64-linux-gnu/libxcb.so.1 ~/lib
  • sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' ~/lib/libxcb.so.1
  • LD_PRELOAD=$HOME/lib/libxcb.so.1 code

On top of this, I made an alias to inject the LD_PRELOAD variable whenever "code" is executed.

In your shell config,

alias code="LD_PRELOAD=$HOME/lib/libxcb.so.1 code"

Thanks a lot!

mkdir ~/lib
cp /usr/lib/x86_64-linux-gnu/libxcb.so.1 ~/lib
sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' ~/lib/libxcb.so.1
echo 'alias code="LD_PRELOAD=$HOME/lib/libxcb.so.1 code"' > ~/.bash_aliases
bash

code --version
1.44.2
ff91584
x64

works like a charm on ubuntu_18.04+novnc+xfce4

@svc76
Copy link

svc76 commented May 3, 2020

@FelixQuehl The old fix from "groon" May 8 2016 above still works. It is sad that this issue still dangles around. It worked in Windows Subsystem for Linux / Ubuntu at least.

For convenience: sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' /usr/lib/x86_64-linux-gnu/libxcb.so.1

This worked perfectly fine for me! Thanks a lot. Mine was a ubuntu 18.04 LTS with LXDE over TightVNCServer. Accessing through screenshare app from Mac.

@neo502721
Copy link

There is a much cleaner workaround that won't break other apps:

# make a copy of the relevant library
mkdir ~/lib
cp /usr/lib/x86_64-linux-gnu/libxcb.so.1 ~/lib
sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' ~/lib/libxcb.so.1
# set the dynamic loader path to put your library first before executing VS Code
LD_LIBRARY_PATH=$HOME/lib code

Obviously, you can tweak your .desktop files and other launchers to set the environment variable solely for VS Code. Go to /usr/share/applications/code.desktop, copy it to ~/.gnome/apps (or wherever your desktop manager likes it) and change the Exec line to read something like:

Exec=sh -c "env LD_LIBRARY_PATH\=\$HOME/lib  /usr/share/code/code" %U

The sh -c makes sure the command is evaluated and variables expanded, and env sets the variable itself. This is not very pretty, but not all desktop managers handle environment variables inside .desktop files the same way, so it's a sort of belt and suspenders approach.

I just tested this on Xenial (Ubuntu 16.04) inside vnc4server. Of course the real issue needs to be fixed upstream in Electron (I have to wonder why they don't have cleaner fallbacks for lack of graphics acceleration...)

I'm use ubuntu vnc too. The exec cmd need --no-sandbox parameter.

if no that, vscode will fail:
[27719:0916/111425.651934:FATAL:electron_main_delegate.cc(275)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
Trace/breakpoint trap (core dumped)

vscode version:
version: 1.49.0
Commit: e790b93
Date: 2020-09-10T13:20:50.359Z (5 days ago)
Electron: 9.2.1
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: 8.3.110.13-electron.0
OS: Linux x64 4.4.0-184-generic

@bennettpeter
Copy link

This problem no longer happens with xubuntu 20.04 and the latest vs code. I don't know when or where it was fixed, but I have not used the workaround for a long time and vs code now runs fine under xrdp.

@thoughtrefraction
Copy link

I'm running xubuntu 20.04 with a tighvnc server and I still need the workaround.

@nh-37rtm
Copy link

same problem (the workaround works) with Ubuntu 20.04 with XMing via SSH (with X11 forwarding), no problem for running vscode without X11 Forwarding

@wr200m
Copy link

wr200m commented Sep 30, 2020

#86372 (comment)
The above link works, but I got annoyed with updates breaking it so I have a modified the non-snap solution to work via LD_PRELOAD instead of LD_LIBRARY_PATH and it works.

create the modified lib

  • mkdir ~/lib
  • cp /usr/lib/x86_64-linux-gnu/libxcb.so.1 ~/lib
  • sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' ~/lib/libxcb.so.1
  • LD_PRELOAD=$HOME/lib/libxcb.so.1 code

This saved the day for me.

@MaximoTrinidad
Copy link

The resolution to this issue has been around for a few years now.
I'm not sure WHY forcing us to continue to manually fix it ourselves. This should have been resolved a long time ago.
;(

@Dantali0n
Copy link

Dantali0n commented Nov 6, 2020

This is still not working for me, neither is the work around. It has been known for four years, surely, something can be done about this!

@jayenashar
Copy link

This is still not working for me, neither is the work around. It has been known for four years, surely, something can be done about this!

@Dantali0n which workaround? mine is at #3451 (comment)

@Dantali0n
Copy link

This is still not working for me, neither is the work around. It has been known for four years, surely, something can be done about this!

@Dantali0n which workaround? mine is at #3451 (comment)

Yes, I get:

buffer.js:585
    slice: (buf, start, end) => buf.utf8Slice(start, end),
                                    ^

RangeError: Index out of range
    at Object.slice (buffer.js:585:37)
    at Buffer.toString (buffer.js:782:14)
    at Object.readFileSync (fs.js:386:41)
    at Object.fs.readFileSync (electron/js2c/asar.js:542:40)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1050:22)
    at Module.load (internal/modules/cjs/loader.js:862:32)
    at Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.Module._load (electron/js2c/asar.js:769:28)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1103:10)
    at internal/main/run_main_module.js:17:11 {
  code: 'ERR_OUT_OF_RANGE'
}

@jayenashar
Copy link

This is still not working for me, neither is the work around. It has been known for four years, surely, something can be done about this!

@Dantali0n which workaround? mine is at #3451 (comment)

Yes, I get:

buffer.js:585
    slice: (buf, start, end) => buf.utf8Slice(start, end),
                                    ^

RangeError: Index out of range
    at Object.slice (buffer.js:585:37)
    at Buffer.toString (buffer.js:782:14)
    at Object.readFileSync (fs.js:386:41)
    at Object.fs.readFileSync (electron/js2c/asar.js:542:40)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1050:22)
    at Module.load (internal/modules/cjs/loader.js:862:32)
    at Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.Module._load (electron/js2c/asar.js:769:28)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1103:10)
    at internal/main/run_main_module.js:17:11 {
  code: 'ERR_OUT_OF_RANGE'
}

i don't think that is related to this issue...

@duskygloom
Copy link

Open up ''/usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0'' and remove BIG_EXTENSIONS to something else like FIG_EXTENSIONS.
sudo vi /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
s/BIG_EXTENSIONS/FIG_EXTENSIONS
This is a total hack, but it does work.
@Tyriar maybe you can put this in your release notes or something. The reason is that XRDP only works with Ubuntu MATE (or XFCE, etc.) lighter weight desktops, and there this BIG REQUEST thing doesn't seem to work.

for me it was sudo vi /usr/lib/aarch64-linux-gnu/libxcb.so.1.1.0
and it worked! vscode on android! (on ubuntu on termux)

Can you please help me with that? I'm also having the same problem, but am not able to fix it

@bennettpeter
Copy link

What version of ubuntu are you using? I use xubuntu and I had this problem on xenial (16.04). However in 18.04 and 20.04 this is no longer a problem, vs code just works under xrdp with no change. Perhaps some other issue is causing your problem.

@duskygloom
Copy link

What version of ubuntu are you using? I use xubuntu and I had this problem on xenial (16.04). However in 18.04 and 20.04 this is no longer a problem, vs code just works under xrdp with no change. Perhaps some other issue is causing your problem.

It maybe a bit off track... but I'm actually using debian 10.1

@defenestratexp
Copy link

The sed BIG_REQUESTS thing worked for me. Using fluxbox 1.35 as the wm. Served with tightvnc. Accessing the desktop via the viewer built into guacamole, but that appears to be irrelevant

@isanmu
Copy link

isanmu commented Sep 22, 2023

Use code --user-data-dir=/tmp/remote.

$ code --help
...
  --user-data-dir <dir>             Specifies the directory that user data is
                                    kept in. Can be used to open multiple
                                    distinct instances of Code.
...

I'm sure they just pass it through to chromium, because I have to use the same flag for it when using xrdp with multiple sessions.

https://chromium.googlesource.com/chromium/src.git/+/master/docs/user_data_dir.md

Thanks a lot. This method worked for me! (PS. sed BIG_REQUESTS thing didn't work for me.)

@YLRK
Copy link

YLRK commented Nov 1, 2023

When I encountered the same problem in Ubuntu20, I did not solve it by modifying the lib method above. Instead, I solved it by adding a command to the launcher.
image
Add the --no-sandbox command to open it
/usr/share/code/code --unity-launch --no-sandbox %F

  • VS Code Version: 1.83.1
  • OS Version: Ubuntu 20.04.6 LTS

@Niclorix
Copy link

Niclorix commented Nov 9, 2023 via email

@deepak1556
Copy link
Collaborator

Closing as issue is in upstream component and it does not seem actionable from our end. Things have improved since the issue was created, you can now use our remote development suite as a workaround.

@deepak1556 deepak1556 closed this as not planned Won't fix, can't repro, duplicate, stale Dec 12, 2023
@microsoft microsoft locked as resolved and limited conversation to collaborators Dec 12, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
electron Issues and items related to Electron help wanted Issues identified as good community contribution opportunities linux Issues with VS Code on Linux remote-desktop upstream Issue identified as 'upstream' component related (exists outside of VS Code) upstream-issue-linked This is an upstream issue that has been reported upstream
Projects
None yet
Development

No branches or pull requests