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?
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
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.
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?
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”)?
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
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.