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

Open
hannesne opened this Issue Feb 25, 2016 · 31 comments

Projects

None yet
@hannesne
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 was assigned by egamma Feb 25, 2016
@roterdam

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
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 bug and removed help wanted labels Apr 4, 2016
@joeaudette

@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

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

@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

@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
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

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

@groone
groone commented May 8, 2016 edited

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

@groone Thanks! will give that a try soon

@knockshore

@groone Thanks. it worked.

@appeality

@groone Thanks! This worked for me as well.

@ctaggart
ctaggart commented Jun 8, 2016

That worked for X2go on Debian Jessie as well. 👍

@msouga
msouga commented Jun 10, 2016

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

@emseedee

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

@Nicholi
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
rcarmo commented Jun 20, 2016 edited

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
k-y commented Jun 20, 2016

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

@AlexZeitler

@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

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
  • 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

@MaximoTrinidad
MaximoTrinidad commented Sep 20, 2016 edited

In summary! I was able to make it work in Ubuntu 16.04.1 remote session.

There are two files I changed which I don't know which is the correct one:
libxcb.so.1 and libxcb.so.1.1.0

Here are the steps for the workaround:

  1. Using (sudo su) nautilus, Search and found files on folder "/usr/lib/x86_64-linux-gnu"
  2. Backup both files to a backup folder.
  3. Then, execute the following command (sudo su):
  •  sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' /usr/lib/x86_64-linux-gnu/libxcb.so.1
    
  •  sudo sed -i 's/BIG-REQUESTS/_IG-REQUESTS/' /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
    
  1. Copy both files to "/usr/share/code"
  2. In Windows, open Remote Desktop connection, assign Linux IP-Address.
  3. In Linux Remote session, click on the Applications menu, go to Development, then Visual Studio Code and the application open.

Honestly, there most be a better way to do this but it works.
xrdp_code-session

@wirecat
wirecat commented Sep 22, 2016 edited

@rcarmo This worked perfectly on Ubuntu 16.04 and IMO the best workaround. Modifying that file globally broke my wireshark install, but this doesn't and is simple to do. Thank you!

@rcarmo
rcarmo commented Sep 24, 2016 edited

@wirecat : thanks. I've just added a few more notes to my original comment. I don't know why it didn't work for other people, but I've used this around a dozen times, since I routinely deploy new development VMs and have the whole thing scripted by now. Hasn't failed me yet.

@MaximoTrinidad

FYI.. The image may not be clear enough. I'm demonstrating Remote Desktop connection from within Windows 2016 VM to my Physical Ubuntu laptop. I'm using Xfce Session which I couldn't make VS Code to work via xrdp unless I use the above set of instructions.

VS Code in Ubuntu works Great!

:)

@lucdekens

@rcarmo Your fix works for me.
Thanks

@alexperovich alexperovich added a commit to alexperovich/azure-devtestlab-artifacts that referenced this issue Nov 15, 2016
@alexperovich alexperovich Add workarround for Microsoft/vscode#3451 34296f9
@CallumJHays

Thanks @rcarmo. Worked with no issues.

@Tyriar
Member
Tyriar commented Nov 21, 2016

This is the upstream issue if anyone wants to look into it electron/electron#2256, I'd love to get it fixed in Electron instead of relying on this hack.

@Tyriar Tyriar added the help wanted label Nov 21, 2016
@Tyriar Tyriar added this to the Backlog milestone Nov 21, 2016
@MaximoTrinidad

11/26/2016
Just an FYI

This issue still hasn't been resolved. I just installed the VS Code Insider version and doesn't work when using XRDP.

I had to copy over the two files: libxcb.so.1 and libxcb.so.1.1.0 from 'usr/share/code' into /usr/share/code-insider' folder and it WORKS!!

:)

@petersalomonsen
petersalomonsen commented Dec 5, 2016 edited

Here's my solution for running vs code in a remote ubuntu desktop:

http://pjsjava.blogspot.no/2016/12/my-vnc-based-development-environment.html

I installed libxss1 and libasound2 in order to get vs code to run (no hack with libxcb).

@laygr
laygr commented Jan 7, 2017 edited

@rcarmo 's solution works for me.
I'm using on the remote: MATE, x2go server, CentOS 7
and on the client: OS X, x2go client, quartz

It also works with XFCE if you don't have MATE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment