Having trouble using X11 forwarding with GLX - linux

Covid has me working remotely, and I'm pretty stuck here.
I've had no problem using X11 forwarding for UIs and even for 3D OpenSceneGraph visualizations, but a new application I need to run gives the following error on the remote computer:
X Error of failed request: GLXUnsupportedPrivateRequest
Major opcode of failed request: 149 (GLX)
Minor opcode of failed request: 16 (X_GLXVendorPrivate)
Serial number of failed request: 35
Current serial number in output stream: 38
The remote computer is a linux machine running ubuntu 16.04, the local computer is a mac using XQuartz as the X server.
To the best of my research it seems like the local computer does not support a certain GLX request. I'm wondering if this is just a missing GLX feature from XQuartz that can't be solved.
I tried to investigate if GLX was the problem. If I run 'glxdemo' I see the yellow square no problem. Possibly related - when I run glxgears, I see gears that are NOT moving, despite no errors and the console reporting non-zero fps.
Some other interesting information, here is the result of me running 'glxinfo' on the remote computer. Is this related to direct rendering not being on? I read this has something to do with using libGL.so from NVidia which doesn't support remote GLX. Is that the right path to go down? Something else that is weird is that 'OpenGL renderer string' references the intel chip inside, not the nvidia graphics card. Why would that be the case and is it related?
name of display: localhost:10.0
display: localhost: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.4
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_OML_swap_method, GLX_SGIS_multisample,
GLX_SGIX_fbconfig
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
GLX_ARB_context_flush_control, GLX_ARB_create_context,
GLX_ARB_create_context_no_error, GLX_ARB_create_context_profile,
GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_buffer_age,
GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
GLX_EXT_fbconfig_packed_float, GLX_EXT_framebuffer_sRGB,
GLX_EXT_import_context, GLX_EXT_stereo_tree, GLX_EXT_swap_control,
GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_NV_copy_buffer,
GLX_NV_copy_image, GLX_NV_delay_before_swap, GLX_NV_float_buffer,
GLX_NV_multisample_coverage, GLX_NV_present_video,
GLX_NV_robustness_video_memory_purge, GLX_NV_swap_group,
GLX_NV_video_capture, GLX_NV_video_out, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig
OpenGL vendor string: Intel Inc.
OpenGL renderer string: Intel(R) Iris(TM) Plus Graphics 640
OpenGL version string: 1.4 (2.1 INTEL-10.25.24)
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,
GL_ARB_fragment_program_shadow, GL_ARB_multisample, GL_ARB_multitexture,
GL_ARB_occlusion_query, GL_ARB_point_parameters, GL_ARB_point_sprite,
GL_ARB_shadow, GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_non_power_of_two, GL_ARB_transpose_matrix,
GL_ARB_vertex_program, GL_ARB_window_pos, GL_ATI_texture_mirror_once,
GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_draw_range_elements,
GL_EXT_fog_coord, GL_EXT_framebuffer_object, GL_EXT_multi_draw_arrays,
GL_EXT_rescale_normal, GL_EXT_secondary_color,
GL_EXT_separate_specular_color, GL_EXT_shadow_funcs,
GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_env_add, GL_EXT_texture_filter_anisotropic,
GL_EXT_texture_lod_bias, GL_NV_blend_square, GL_NV_depth_clamp,
GL_NV_fog_distance, GL_NV_light_max_exponent, GL_NV_texgen_reflection,
GL_SGIS_generate_mipmap, GL_SGIS_texture_lod
Any help would be super appreciated. Working remotely is kind of tough but I'm forced to do it.

I ran into the same issue with a different program, after installing an Nvidia GPU in my server in order to run CUDA applications. It seems that after doing so, some GL applications (but not glxinfo or glxgears) load Nvidia's libGLX.so instead of the Mesa indirect one that should be used for GLX forwarding over ssh.
This was solved by entering the following on the remote machine:
sudo update-glx --config glx
And then selecting the Mesa driver.
I do think this disables the Nvidia GLX driver system-wide, which may not be desirable if the graphics card is used for local video output.

Related

Linux Mint Uma - meshlab does not start, libGL errors fbConfigs, swrast

I installed meshlab from the repo (sudo apt install) on a freshly made LM partition. when calling I got these msgs:
qt5ct: using qt5ct plugin
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Current Plugins Dir is: /usr/lib/x86_64-linux-gnu/meshlab/plugins
qt5ct: D-Bus global menu: no
Shader directory found '/usr/share/meshlab/shaders', and it contains 19 gdp files
terminate called after throwing an instance of 'MLException'
what(): MLSceneGLSharedDataContext: GLEW initialization failed
Abgebrochen (Speicherabzug geschrieben)
Maybe the prob is caused by the graphic cards/driver due to Dell notebook with onboard plus dedicated graphics:
Graphics:
Device-1: NVIDIA G98M [GeForce 9200M GS] vendor: Dell driver: nvidia
v: 340.108 bus ID: 02:00.0 chip ID: 10de:06e8
Device-2: NVIDIA C79 [GeForce 9400M G] vendor: Dell driver: nvidia
v: 340.108 bus ID: 03:00.0 chip ID: 10de:0866
Display: x11 server: X.Org 1.20.11 driver: modesetting,nouveau,nvidia
unloaded: fbdev,vesa resolution: 1920x1200~60Hz
OpenGL: renderer: GeForce 9400M G/integrated/SSE2 v: 3.3.0 NVIDIA 340.108
How can I solve?

chrome-driver 83 compatibility with Ubuntu

I'm running Ubuntu 18.04.1 LTS and used stable versions of Google Chrome v81 and compatible chrome-driver v81 for a long time successfully.
After reinstalling google-chrome-stable up to 83.0.4103.61 and updating chrome-driver up to 83.0.4103.39. According to the official page they are fully compatible.
But after these updates I'm getting error unable to connect to renderer.
My capabilities remains the same:
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: [
'--headless',
'--disable-gpu',
'--no-sandbox',
'--remote-debugging-port=9222',
'--ignore-certificate-errors',
'--allow-insecure-localhost'
]
}
}
And full error message is the following:
[11:07:05] E/launcher - session not created
from disconnected: unable to connect to renderer
(Session info: headless chrome=83.0.4103.61)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: '******', ip: '******', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-38-generic', java.version: '10.0.2'
Driver info: driver.version: unknown
remote stacktrace: #0 0x5633488fb579 <unknown>
My webdriver-manager status:
[11:24:59] I/status - selenium standalone version available: 3.141.59 [last]
[11:24:59] I/status - chromedriver version available: 83.0.4103.39 [last]
[11:24:59] I/status - geckodriver version available: v0.26.0 [last]
[11:24:59] I/status - android-sdk is not present
[11:24:59] I/status - appium is not present
Does anybody faced the same issue and knowing how to solve it or rollback to v81 correctly? Any suggestions will be appreciated.
P.S. 1) the same config works well locally on the latest MacOS 2) I didn't succeed to launch chromium-browser v81 with driver v81, probably did the rollback in a wrong way.
The issue is resolved. The problem was that I was using argument --remote-debugging-port=9222. But someday google-chrome process got stuck deadly and occupied the port. So, when the chromedriver starts the google-chrome it can't get access to busy port for debugging purposes and simply exits with no errors. That's why the chromedriver can't get access to google-chrome and sends unable to connect to renderer error.
The solution is:
kill frozen processes that occupy ports
use debugging-port when you really need it
using direct connection to the chromedriver reduces "layers" so the overall stability was improved

Three.js shader error 1282

Receiving following when trying to render using three.js.
THREE.WebGLProgram: shader error: 1282 gl.VALIDATE_STATUS false
gl.getProgramInfoLog not linked.
I have gotten my project running on a Windows 10 laptop and now trying to get it running on a Windows Server 2012. I speculate that it might be due to the server not having a real GPU, but I am no OpenGL developer and it's all chinese to me. This is what the DXDIAG says:
Display Devices
Card name: RDPUDD Chained DD
Manufacturer:
Chip type:
DAC type:
Device Type: n/a
Device Key: Enum\ROOT\BASICRENDER
Display Memory: n/a Dedicated Memory: n/a
Shared Memory: n/a
Current Mode: 1920 x 1080 (32 bit) (32Hz)
Driver Name: Driver File Version: ()
Driver Version:
DDI Version: 9Ex
Feature Levels:
Driver Model: Graphics Preemption: Compute Preemption: Driver Attributes: Final Retail Driver Date/Size: , 0 bytes
WHQL Logo'd: n/a
WHQL Date Stamp: n/a Device Identifier: {D7B71AF4-43CC-11CF-3921-F003ADC2CB35}
Vendor ID: 0x1414
Device ID: 0x008C
SubSys ID: 0x00000000
Revision ID: 0x0000 Driver Strong Name:
Rank Of Driver:
Video Accel:
DXVA2 Modes:
Deinterlace Caps: n/a
D3D9 Overlay: Not Supported
DXVA-HD: Not Supported
DDraw Status: Not Available
D3D Status: Enabled
AGP Status: Not Available
So the process is as usual to install node-gyp, which is risky business. That requires Visual C++ Build tools, which is installed on the server. Python 2.7 is installed and I've run the commands that are stated in the Installation section: https://github.com/nodejs/node-gyp
Then I use headless gl to be able to create the WebGL context in Three.js. That requires d3dcompiler_47.dll, which is added to the system32 folder. https://github.com/stackgl/headless-gl
The thing is that the server is pretty locked.. I am not able to do npm install of modules due to self signed certificate, probably since I am not allowed to do jack on the server. Now I'm pretty much stuck.. I don't know if my error is due to some compiler not being installed, if a module needs to be installed on the server, if node-gyp is mocking with me or whatever. It's a complete mess. But the server do work on my own machine. Anyone that have encountered something like it and could point me in a direction? Would be greatful!

How can i unbind radeon driver gracefully?

I have igd and ati graphics card on my pc. I use ubuntu as my OS.
After system boot, ati graphics card was bound to radeon driver.
I tried to unbind Radeon by typing "echo 0000:01:00.0 > /sys/bus/pci/driver/radeon/unbind".
After I tried this, I saw this kernel error:
[ 316.289664] Call Trace:
[ 316.289665] [<ffffffff8275c32c>] dump_stack+0x45/0x56
[ 316.289667] [<ffffffff8207022d>] warn_slowpath_common+0x7d/0xa0
[ 316.289668] [<ffffffff8207029c>] warn_slowpath_fmt+0x4c/0x50
[ 316.289669] [<ffffffff82097d68>] ? check_preempt_curr+0x78/0xa0
[ 316.289675] [<ffffffffc0b26d52>] radeon_gart_unbind+0xd2/0xe0 [radeon]
[ 316.289680] [<ffffffffc0b23b4a>] radeon_ttm_backend_unbind+0x1a/0x20 [radeon]
[ 316.289681] [<ffffffffc0ae5fc7>] ttm_tt_unbind+0x27/0x40 [ttm]
[ 316.289683] [<ffffffffc0ae9928>] ttm_bo_move_ttm+0xd8/0x120 [ttm]
Can I even unbind the Radeon Driver, or will drm prevent this?
PS: I need radeon to exists after system boot and then unbind it afterwards, otherwise I could just put
radeon in /etc/modprobe.d/blacklist.conf.
DRM does not support that. Thats unfortunate for you.
Currently there is no support from DRM. You can find good walkarounds, which offer a decent solution on this website DRM support: Platform comparison - castLabs

Internal error occured during launch of waveform

I am running redhawk 1.9 and am trying to lauch a waveform. I get the following error: An internal error occurred during: "Launching FM_Radio_Example".
org.jacorb.orb.ORB cannot be cast to com.sun.corba.se.spi.orb.ORB
The error panel shows the following:
java.lang.ClassCastException: org.jacorb.orb.ORB cannot be cast to com.sun.corba.se.spi.orb.ORB
at com.sun.corba.se.impl.corba.TypeCodeImpl.copy(TypeCodeImpl.java:2017)
at com.sun.corba.se.impl.corba.TypeCodeImpl.copy(TypeCodeImpl.java:2054)
at com.sun.corba.se.impl.corba.TypeCodeImpl.copy(TypeCodeImpl.java:2222)
at com.sun.corba.se.impl.corba.TypeCodeImpl.copy(TypeCodeImpl.java:2234)
at com.sun.corba.se.impl.corba.AnyImpl.write_value(AnyImpl.java:608)
at org.jacorb.orb.CDROutputStream.write_any(CDROutputStream.java:743)
at CF.DataTypeHelper.write(DataTypeHelper.java:79)
at CF.PropertiesHelper.write(PropertiesHelper.java:61)
at CF._ResourceStub.configure(_ResourceStub.java:189)
at gov.redhawk.model.sca.impl.ScaAbstractComponentImpl.configure(ScaAbstractComponentImpl.java:680)
at gov.redhawk.ide.debug.internal.LocalApplicationFactory.configureComponent(LocalApplicationFactory.java:297)
at gov.redhawk.ide.debug.internal.LocalApplicationFactory.configureComponents(LocalApplicationFactory.java:199)
at gov.redhawk.ide.debug.internal.LocalApplicationFactory.create(LocalApplicationFactory.java:158)
at gov.redhawk.ide.debug.internal.ui.LocalWaveformLaunchDelegate.launch(LocalWaveformLaunchDelegate.java:98)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:855)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:704)
at gov.redhawk.ide.debug.ui.LaunchUtil$1.run(LaunchUtil.java:213)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
I have a device mananger node that when launched I get the following error. It may be related but I am not sure. The library in question is at /root/src/redhawk-src-1.9.0/redhawk/src/base/framework/.libs. I set the environment variable PKG_CONFIG_PATH to this path but that did not help.
INFO:DeviceManager - Starting Device Manager with /nodes/SI9138_Node/DeviceManager.dcd.xml
INFO:DeviceManager_impl - Connecting to Domain Manager REDHAWK_root/REDHAWK_root
INFO:DeviceManager_impl - Child process SI9138_1 (pid 24915) has exited with status 127
/var/redhawk/sdr/dev/devices/SI9138/cpp/SI9138: error while loading shared libraries: libossieidl.so.3: cannot open shared object file: No such file or directory
WARN:DeviceManager_impl - skipping exec param with null value
INFO:DeviceManager - Starting ORB!
INFO:SI9138_Node:GPP_1:Registering Device
INFO:DeviceManager_impl - Registering device GPP_1 on Device Manager SI9138_Node
INFO:DeviceManager_impl - Initializing device GPP_1 on Device Manager SI9138_Node
INFO:DeviceManager_impl - Registering device GPP_1 on Domain Manager
Here is the eclipse/java information:
eclipse.buildId=1.9.0.R201309261648
java.version=1.6.0_30
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments: -os linux -ws gtk -arch x86_64
The latest version of openjdk has caused some problems with jacorb. Below are two ways to get around the problem:
Downgrade openjdk and openjdk-devel
$ sudo yum downgrade java-1.6.0-openjdk-devel java-1.6.0-openjdk
Install REDHAWK 1.8.7+ or REDHAWK 1.10+ and launch the IDE at /usr/local/redhawk/ide/1.10/eclipse.

Resources