Closed paulraines68 closed 3 years ago
I can't reproduce the issue, which is a necessary first step before I can fix it or work around it. What I did:
vglconnect -s
vglrun /opt/VirtualGL/bin/glxspheres64
I also tried the same thing with a VNC session as the 2D X server, as you indicated above. Same results. Are you sharing a home directory between client and server? What else could I be missing?
Yes, I am sharing a home directory on all the machines involved over NFS. I have nothing going on that would be writing to the ~/.Xauthority file at the same time ignoring locks. If locking was the issue, the issue would be more random but it is consistent.
If you xauth list the /etc/opt/VirtualGL/vgl_xauth_key on the remote machine running C8, do you see a /unix:0 or just /unix:
And after running vlgrun on the remote machine what is in your ~/.Xauthority exactly?
Here are the lines I put in a greeter script to replace /usr/bin/vglgenkey
/bin/rm -rf /etc/opt/VirtualGL/vgl_xauth_key
touch /etc/opt/VirtualGL/vgl_xauth_key
xauth -f /etc/opt/VirtualGL/vgl_xauth_key add $(xauth -f /run/user/$(id -u gdm)/gdm/Xauthority list | grep unix: | sed -e 's/unix: MIT/unix:0 MIT/' )
This works fine for me on my machines.
Sorry. This is all my fault. The /usr/bin/vglgenkey from 2.6.5 is working fine
The confusion is the X servers on these boxes have been running a long time and were already running X when VirtualGL was installed. So the /etc/opt/VirtualGL/vgl_xauth_key was just a by-hand copy of/run/user/42/gdm/Xauthority after I did the yum install so I would not have to have the user logout and back in. That was weeks ago and I forgot about that. It was an install procedure we used on CentOS7 for years with no suprises.
It works fine with vglrun locally so we did not notice this issue. Only now when someone did the vglconnect remote did it come up. Still not sure why it works locally but not remotely.
So vglgenkey was never actually run on the box like I assumed
I will need to redo my install prodecure so after the yum install I do:
# sudo -u gdm /bin/bash
bash-4.4$ DISPLAY=:0 XAUTHORITY=/run/user/42/gdm/Xauthority /usr/bin/vglgenkey
Everything below works fine when using CentOS7 machines. But on CentOS8 machines running vglrun over a vglconnect causes the XAUTHORITY to be corrupted in a way that you cannot even run X programs outside of vglrun
Setup is a CentOS8 box "sisu" running a TigerVNC session user connects to via Windows based UltraVNC viewer. Everything works fine on the 'sisu' box with or without vglrun. Then users does a 'vgconnect -s' to another CentOS8 box "storm" with VirtualGL installed. Running X apps without vglrun works fine, running with vglrun gives a X11 connection reject error, and after that one cannot run X apps outside of vglrun anymore. The cookie for the SSH forwarded X11 connection has been
It seems to have removed the cookie from the forwarded SSH X11 connection and inserted the local :0 display cookie
Its actually worse that that. I had a cookie for a session on another machine named pinto that got removed too
My guess is some change in the behavior of the xauth tool in CentOS8 though both CentOS8 and CentOS7 package are based on xorg-x11-auth-1.0.9 with only a release difference (so difference in patches applied in CentOS8 version)
Looks like vglrun is doing a xauth merge so I will test just that:
Hmm. Why is the GDM xauth file so different on CentOS8
Okay, so on storm I now do this
And now I can vglconnect to storm and run vglrun no problem
I will now modify my /usr/share/gdm/greeter/autostart/virtualgl.desktop to call a wrapper script that "fixes" the vgl_auth_key after running /usr/bin/vglgenkey
This missing ":0" is at the GDM level
so maybe this is a "bug" with GDM. But maybe vglgenkey could be adjusted to "fix" it when it sees it.