NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
18.06k stars 14.12k forks source link

non-nixos: Could not initialize GLX, Aborted (core dumped) #82959

Open tobiasBora opened 4 years ago

tobiasBora commented 4 years ago

Describe the bug I just installed zoom-us 3.0.287250.0828 on ubuntu 16.04. When I try to run it, it fails:


$ ls -al $(which zoom-us)
lrwxrwxrwx 1 me me 79 janv.  1  1970 /home/me/.nix-profile/bin/zoom-us -> /nix/store/rdsghgkbs56pyqkasb42k0g72yf9gfa4-zoom-us-3.5.361976.0301/bin/zoom-us

$ zoom-us 
ZoomLauncher started.
cmd line: 
CreateReportChannel bp_server_fd=4
$HOME = /home/me 
Can't load/home/me/.config/zoomus.conf
export SSB_HOME=/home/me/.zoom; export QSG_INFO=1; export LD_LIBRARY_PATH=/nix/store/rdsghgkbs56pyqkasb42k0g72yf9gfa4-zoom-us-3.5.361976.0301/share/zoom-us; export BREAKPAD_CLIENT_FD=3; /nix/store/rdsghgkbs56pyqkasb42k0g72yf9gfa4-zoom-us-3.5.361976.0301/share/zoom-us/zoom "" 
zoom started.
Client: Breakpad is using Client-Server Mode! client fd = 3
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::NoProfile)
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::NoProfile)
Could not initialize GLX
Aborted (core dumped)
success to create child process,status is 34304.
zoom exited normally.
Something went wrong while running zoom,exit code is 134.
ZoomLauncher exit.

To Reproduce Steps to reproduce the behavior:

  1. On ubuntu 16.04, update nix-channel --update and install zoom-us with nix-env -iA nixpkgs
  2. Run zoom-us
  3. See the crash

Expected behavior Should not crash

Metadata Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.

Maintainer information:

# a list of nixpkgs attributes affected by the problem
attribute: zoom-us
# a list of nixos modules affected by the problem
module:
matthewbauer commented 4 years ago

I suspect it's the libGL drivers causing this issue. I think something like https://github.com/guibou/nixGL can resolve this. That one ends up just setting LD_LIBRARY_PATH for you.

Perhaps? we can bundle swrast mesa drivers with zoom-us so that this works out of the box. It's only like 18M so doesn't hurt closure too much.

spinus commented 4 years ago

it's hard to even reproduce this issue. Would be nice to provide any details. Do we even support ubuntu 16? We support nixos for shorter period of time, I don't see why ubuntu versions would be longer supported than nixos itself.

matthewbauer commented 4 years ago

Do we even support ubuntu 16? We support nixos for shorter period of time, I don't see why ubuntu versions would be longer supported than nixos itself.

Sort of - at least we want everything to be "pure" enough that it doesn't matter what distro you're running. All that should matter is you have a supported version of Nixpkgs (and a post 2.6 kernel is required I think). I would suspect that ubuntu 18 or 20 or whatever also has the same issue. If it's the problem I'm thinking of, it is really a case of NixOS vs. non-NixOS.

But you're right that it's probably not a good idea to fight specific quirks in other distros. Verifying it happens in another distro might be helpful.

veprbl commented 4 years ago

Also see https://github.com/NixOS/nixpkgs/issues/66755#issuecomment-567016193

tobiasBora commented 4 years ago

Thanks for the answers. So as explained by matthewbauer, Nix is supposed to be as pure as possible, i.e. it should not depend on the OS running behind, otherwise it indicates some non-purity, and therefore non-reproducibility (of course, if some very specific OS have some internal bug making it very hard to work for nix, I understand, but I don't think it's the case here as the same error is hapenning on both debian unstable and ubuntu 16.04). So I tried with my debian unstable, freshly updated, and I have a similar error:

$ zoom-us 
ZoomLauncher started.
cmd line: 
CreateReportChannel bp_server_fd=4
$HOME = /home/me 
Can't load/home/me/.config/zoomus.conf
export SSB_HOME=/home/me/.zoom; export QSG_INFO=1; export LD_LIBRARY_PATH=/nix/store/rdsghgkbs56pyqkasb42k0g72yf9gfa4-zoom-us-3.5.361976.0301/share/zoom-us; export BREAKPAD_CLIENT_FD=3; /nix/store/rdsghgkbs56pyqkasb42k0g72yf9gfa4-zoom-us-3.5.361976.0301/share/zoom-us/zoom "" 
Daemon not responding.
zoom started.
Client: Breakpad is using Client-Server Mode! client fd = 3
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::NoProfile)
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::NoProfile)
Could not initialize GLX
Aborted
success to create child process,status is 34304.
zoom exited normally.
Something went wrong while running zoom,exit code is 134.
ZoomLauncher exit.
tobiasBora commented 4 years ago

I suspect it's the libGL drivers causing this issue. I think something like https://github.com/guibou/nixGL can resolve this. That one ends up just setting LD_LIBRARY_PATH for you.

Perhaps? we can bundle swrast mesa drivers with zoom-us so that this works out of the box. It's only like 18M so doesn't hurt closure too much.

So if I understand, it means that people could use this inefficient swarst driver out of the box, and if they need more efficient drivers, then the option for the user is to go through this?

However, I tried this second approach (I don't want to use my nvidia graphical card for that, so I just wanted to use the embeded intel card, that's why I used nixGLIntel), but it also fails (here it's on my debian unstable):

me@medeb:/tmp$ git clone https://github.com/guibou/nixGL          
Clonage dans 'nixGL'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 126 (delta 2), reused 5 (delta 2), pack-reused 116
Réception d'objets: 100% (126/126), 26.65 Kio | 1.16 Mio/s, fait.
Résolution des deltas: 100% (42/42), fait.

me@medeb:/tmp$ cd nixGL/

me@medeb:/tmp/nixGL$ nix-build -A nixGLIntel
[...]
building '/nix/store/in28gggqkkwd1gwikkvrx076qifna3iv-nixGLIntel.drv'...
/nix/store/sw4rr0w27p09w67a3ziqsjpwq79bsays-nixGLIntel

me@medeb:/tmp/nixGL$ nix-env -i ./result
installing 'nixGLIntel'
building '/nix/store/qj517irncvvsp1rpjrjdjzrpzs492b30-user-environment.drv'...
created 73 symlinks in user environment

me@medeb:/tmp/nixGL$ ls result/bin/
nixGLIntel

me@medeb:/tmp/nixGL$ nixGLIntel zoom-us
ZoomLauncher started.
cmd line: 
CreateReportChannel bp_server_fd=4
$HOME = /home/me 
Can't load/home/me/.config/zoomus.conf
export SSB_HOME=/home/me/.zoom; export QSG_INFO=1; export LD_LIBRARY_PATH=/nix/store/rdsghgkbs56pyqkasb42k0g72yf9gfa4-zoom-us-3.5.361976.0301/share/zoom-us; export BREAKPAD_CLIENT_FD=3; /nix/store/rdsghgkbs56pyqkasb42k0g72yf9gfa4-zoom-us-3.5.361976.0301/share/zoom-us/zoom "" 
Le démon ne répond pas.
zoom started.
Client: Breakpad is using Client-Server Mode! client fd = 3
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::NoProfile)
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::NoProfile)
Could not initialize GLX
Aborted
success to create child process,status is 34304.
zoom exited normally.
Something went wrong while running zoom,exit code is 134.
ZoomLauncher exit.

I also tried the following command, which works with the nix version of glxinfo (otherwise it segfault with debian's version):

$ nixGLIntel glxinfo | grep -i 'OpenGL version string'
OpenGL version string: 3.0 Mesa 19.3.3
flokli commented 4 years ago

summoning @guibou

guibou commented 4 years ago

@tobiasBora looks like your nixGL is working fine (based on the output of glxInfo). However it may be possible that zoom is doing some weird stuffs with the OpenGL environment. Could you open an issue with more details on nixGL issue tracker please?

guibou commented 4 years ago

Hey, it seems that zoom does reexport LD_LIBRARY_PATH, see the log:

export SSB_HOME=/home/me/.zoom; export QSG_INFO=1; export LD_LIBRARY_PATH=/nix/store/rdsghgkbs56pyqkasb42k0g72yf9gfa4-zoom-us-3.5.361976.0301/share/zoom-us; export BREAKPAD_CLIENT_FD=3; /nix/store/rdsghgkbs56pyqkasb42k0g72yf9gfa4-zoom-us-3.5.361976.0301/share/zoom-us/zoom "" 

This may be the reason why nixGL is not effective.

guibou commented 4 years ago

@tobiasBora could you try to run /nix/store/b7nlczqm4za17i0y6bhidvyzcl4s6msg-zoom-us-3.5.361976.0301/share/zoom-us/zoom (change the nix store path to the one which is the correct for you) under nixGL please?

zoom is a nightmare of wrapper calling warppers calling wrappers. By doing so, I'm short-circuiting one wrapper, the one which override LD_LIBRARY_PATH.

tobiasBora commented 4 years ago

Hum, interesting, if I run nixGLIntel /nix/store/XXX/share/zoom-us/ZoomLauncher, then it fails, but if I run the nixGLIntel /nix/store/XXX/share/zoom-us/zoom program (not the launcher) directly, then it succeeds. So I guess you're right, the problem comes from the first wrapper.

Should I still write an issue on the nixGL bug tracker?

guibou commented 4 years ago

@tobiasBora no need for issue on nixGL bug tracker, I think we can confirm that the issue comes from zoom.

I wonder if it may be a good idea to fix the nix derivation so /bin/zoom-us points to the working zoom file.

h-oll commented 4 years ago

I was having the same issue as reported by @tobiasBora on Ubuntu 18.04. After properly installing nixGLIntel, and typing nixGLIntel /nix/store/7ff40rlja3drjf1pqdkdid9vkm9rg12c-zoom-us-3.5.385850.0413/share/zoom-us/zoom, it worked.

hmenke commented 4 years ago

Does this help?

export QT_XCB_GL_INTEGRATION=none
jonas-schievink commented 4 years ago

@hmenke Yeah, that allows it to start!

StephenWithPH commented 4 years ago

I was having the same error with a different application from nixpkgs. @hmenke's tip https://github.com/NixOS/nixpkgs/issues/82959#issuecomment-657306112 also worked for me.

majkrzak commented 3 years ago

Shouldn't export QT_XCB_GL_INTEGRATION=none https://github.com/NixOS/nixpkgs/issues/82959#issuecomment-657306112 be added to https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/qt-5/hooks/wrap-qt-apps-hook.sh or https://github.com/NixOS/nixpkgs/blob/355df33432ac534ba2184714850c366708c84cf5/pkgs/development/libraries/qt-5/5.15/default.nix#L190 ?

I'm currently solving this by adding qtWrapperArgs = [ ''--set QT_XCB_GL_INTEGRATION none'' ]; to my derivation.

stale[bot] commented 3 years ago

I marked this as stale due to inactivity. → More info

ento commented 3 years ago

While setting QT_XCB_GL_INTEGRATION to none allows the app to launch and host/join meetings, participants don't get rendered in the meeting view and I get black rectangles instead; I can't see others or myself but other participants can see me. A few other UI elements are also blank:

I'm on Ubuntu and launching the app installed with the official .deb with QT_XCB_GL_INTEGRATION=none /usr/bin/zoom results in the same state. Unsetting the environment variable makes it functional again.

Official .deb version: 5.8.0 (16) nixpkgs: 21.11pre320922.ee084c02040

gslin commented 3 years ago

Actually I am not running Zoom on nixOS, but on flatpak w/ Ubuntu 20.04, with similar issue. My workaround is to use QT_XCB_GL_INTEGRATION=xcb_egl instead of QT_XCB_GL_INTEGRATION=none and the video part is working, although some animations become weird.

stale[bot] commented 2 years ago

I marked this as stale due to inactivity. → More info

gregistech commented 2 years ago

Does this help?

export QT_XCB_GL_INTEGRATION=none

Solved my issue with Krita. I use an AMD Radeon integrated graphics.

em-winterschon commented 2 years ago
export QT_XCB_GL_INTEGRATION=none

Doesn't fix the issue with Zoom 5.11.x or any of the recent Nvidia drivers, where as version 5.10.x worked flawlessly. Setting QT_XCB_GL_INTEGRATION simply disables video entirely and though I can join a meeting with audio that's not exactly a valid fix.

em-winterschon commented 2 years ago

@gslin

My workaround is to use QT_XCB_GL_INTEGRATION=xcb_egl instead of QT_XCB_GL_INTEGRATION=none

After trying that, with the following executed via CLI instead of using Gnome's app icon to start Zoom, my video (Logitech C930e) is working when testing a session via a single user video call, but this is not a long term solution that I trust when needing to be on corporate meetings where career requirements are on the line.

QT_XCB_GL_INTEGRATION=xcb_egl flatpak run us.zoom.Zoom

Running with the following versions:

Flatpak: us.zoom.Zoom = 5.11.3.3882
RHEL 8.6 x86_64
Kernel 5.18.5-1.el8.elrepo.x86_64
Nvidia related RPMs:
dnf-plugin-nvidia-2.0-1.el8.noarch
kmod-nvidia-latest-dkms-515.65.01-1.el8.x86_64
nvidia-driver-515.65.01-1.el8.x86_64
nvidia-driver-cuda-515.65.01-1.el8.x86_64
nvidia-driver-cuda-libs-515.65.01-1.el8.x86_64
nvidia-driver-devel-515.65.01-1.el8.x86_64
nvidia-driver-libs-515.65.01-1.el8.x86_64
nvidia-driver-NvFBCOpenGL-515.65.01-1.el8.x86_64
nvidia-driver-NVML-515.65.01-1.el8.x86_64
nvidia-kmod-common-515.65.01-1.el8.noarch
nvidia-libXNVCtrl-515.65.01-1.el8.x86_64
nvidia-libXNVCtrl-devel-515.65.01-1.el8.x86_64
nvidia-modprobe-515.65.01-1.el8.x86_64
nvidia-persistenced-515.65.01-1.el8.x86_64
nvidia-settings-515.65.01-1.el8.x86_64
nvidia-xconfig-515.65.01-1.el8.x86_64
jonahbron commented 7 months ago

I'm encountering this issue on a derivation of Debian Testing on Intel Iris hw, trying to run kitty.

Both of the suggested values for QT_XCB_GL_INTEGRATION have no effect.

Invoking kitty through nixGL does work for me.