X Error of failed request -- I get this error when connecting with ssh, any idea?

When I connect to one of my Jetson cards with ssh:

ssh -X jetson1

I get the following error:

X Error of failed request:  BadLength (poly request too large or internal Xlib length error)
  Major opcode of failed request:  155 (NV-GLX)
  Minor opcode of failed request:  1 ()
  Serial number of failed request:  19
  Current serial number in output stream:  19

My other Jetson AGX Xavier boards don’t get me the error. This one board, though, I have the Jetson development environment installed. Either way, I think I should not be getting such errors. Any idea what would be causing it to happen?

Note 1: the computer I connect from has an Intel video board so certainly no NV-GLX support. But since the other boards work, maybe it’s something about the Jetson development environment?

hello alexiswilke,

may I know what’s your use-case?
assume you’re rendering camera frame to a display monitor, which cannot done via remote ssh.
please have a try to configure display environment variable, for example, $ export DISPLAY=:0
thanks

Hi Jerry,

Thank you for the info. The commands I run with X actually work with the DISPLAY=:0. So I’m not blocked in that sense. It’s just that somehow I get that one error when I connect with ssh. My app. seems to properly detect everything else as expected.

hello alexiswilke,

could you please briefly describe your use-case,
or, please share the commands you’re used for reference,
thanks

Okay, I made an update to my question above. As I mentioned, the main difference with this board is that it has all the development tools, libraries, headers, etc.

What specific command? FYI, when you specify “DISPLAY” it will have the local X server and GPU driver performing the required operation. When you use “ssh -X ...” the DISPLAY is no longer the Jetson DISPLAY, and is instead forwarded to your host PC to perform those same functions (including anything CUDA, OpenGL, or OpenGLES).

The error you see in the case of “ssh -X ...” is the host PC failing, not the Jetson. If the software installed on the host PC is missing, or a wrong API version, then the remote display to the host PC would fail. I do not know enough about “BadLength” to narrow it down to any specific software, but does your host PC have an NVIDIA GPU and all of the driver support for your application?

1 Like

No command. The message appears on a login with ssh. So I haven’t sent a command yet. Although maybe there is a command run by my .bashrc or similar login script feature. Good point. I should look into that.

And my other PC (not the Jetsons) has an Intel board, so no NVidia anything.

Yes, it is very likely a command from bash starting having support if run directly on the Jetson, but having a missing support when the same command is trying to run on the PC, but only if the command requires GUI or GPU support. An example of requiring GUI or GPU support would be anything using OpenGL/OpenGLES or CUDA.

I do see this in your error, which is worth noting:

Major opcode of failed request:  155 (NV-GLX)

GLX is a basically a glue to initialize for an OpenGL application. NV-GLX is specific to NVIDIA drivers. Jetsons have an integrated GPU (iGPU) which ties directly to the memory controller, whereas a PC uses a discrete GPU (dGPU). As a result the GLX which binds probably has some differences between the two platforms (I have not looked closely at it, but I have no doubt about the differences in GLX existing for dGPU versus iGPU).

There are a number of different bash scripts which might run depending on whether it is a login session or not, but do you have any customization of your bash login on either the Jetson or the host PC? Is your PC side user a member of group “video” (see “grep video /etc/group”)?

1 Like

On the PC, I’m not a member of the “video” group:

$ groups
alexis adm cdrom sudo dip plugdev lpadmin sambashare ve

I’m on the Jetson, which I suspect is the default:

$ groups
alexis adm cdrom sudo audio dip video plugdev i2c lpadmin gdm sambashare ve weston-launch trusty crypto gpio vedev jetson_stats

Is any usecase getting affected? Will you see this error every time you ssh -X to jetson?

Right now, yes. Every time I ssh -X ... that specific Jetson, I get that error. It doesn’t seem to break anything at the moment, though.

On the host PC you might try adding your user to group “video”. Assuming your user name is “nvidia” (substitute for whatever it really is):
sudo usermod -a -G video nvidia

my account at host is in group “video”, but still got those error.

my host,

lspci |grep 'VGA\|Display'
00:02.0 Display controller: Intel Corporation HD Graphics 630 (rev 04)
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)

while login in nano with X forward.

X Error of failed request:  BadLength (poly request too large or internal Xlib length error)
  Major opcode of failed request:  155 (NV-GLX)
  Minor opcode of failed request:  1 ()
  Serial number of failed request:  19
  Current serial number in output stream:  19

if login nano use another pc that only have integrated iGPU, then got different errors.

Xlib:  extension "NV-GLX" missing on display "localhost:12.0".
Xlib:  extension "NV-GLX" missing on display "localhost:12.0".
Xlib:  extension "NV-GLX" missing on display "localhost:12.0".

You should start a new thread for this. When you do post, then beware that NV-GLX, which might be installed on the Jetson, has its requirement instead in the host PC if you forward. The fact that this is DISPLAY of 12.0 tells me you have something special going on, e.g., multiple X servers on your host PC, or perhaps containers, and any such requirement will be applied to that container (which can complicate debugging). Thus it is important to describe all video cards, all containers, all virtual servers, so on.