Optirun fails after last upgrade

Hello!
After the last upgrade, optirun-primus stops working.
I’m stuck to legacy driver (nvidia-390xx):

optirun --debug glxinfo
[ 1889.547126] [DEBUG]Reading file: /etc/bumblebee/bumblebee.conf
[ 1889.547235] [INFO]Configured driver: nvidia
[ 1889.547926] [DEBUG]optirun version 3.2.1-21-g0851da6 starting...
[ 1889.547971] [DEBUG]Active configuration:
[ 1889.547997] [DEBUG] bumblebeed config file: /etc/bumblebee/bumblebee.conf
[ 1889.548034] [DEBUG] X display: :8
[ 1889.548040] [DEBUG] LD_LIBRARY_PATH: /usr/lib/nvidia:/usr/lib32/nvidia:/usr/lib:/usr/lib32
[ 1889.548047] [DEBUG] Socket path: /var/run/bumblebee.socket
[ 1889.548053] [DEBUG] Accel/display bridge: auto
[ 1889.548063] [DEBUG] VGL Compression: proxy
[ 1889.548070] [DEBUG] VGLrun extra options: 
[ 1889.548076] [DEBUG] Primus LD Path: /usr/lib/primus:/usr/lib32/primus
[ 1889.548132] [DEBUG]Using auto-detected bridge primus
[ 1891.061162] [INFO]Response: Yes. X is active.

[ 1891.061182] [INFO]Running application using primus.
[ 1891.061368] [DEBUG]Process glxinfo started, PID 19771.
primus: fatal: failed to load PRIMUS_LOAD_GLOBAL
[ 1891.068695] [DEBUG]SIGCHILD received, but wait failed with No child processes
[ 1891.068717] [DEBUG]Socket closed.
[ 1891.068735] [DEBUG]Killing all remaining processes.

primusrun gives the same output:

primusrun glxgears 
primus: fatal: failed to load PRIMUS_LOAD_GLOBAL

but when the bridge=primus is bypassed, optirun works correctly:

optirun -b none --debug glxgears 
[ 2106.970660] [DEBUG]Reading file: /etc/bumblebee/bumblebee.conf
[ 2106.970814] [INFO]Configured driver: nvidia
[ 2106.971217] [DEBUG]optirun version 3.2.1-21-g0851da6 starting...
[ 2106.971236] [DEBUG]Active configuration:
[ 2106.971240] [DEBUG] bumblebeed config file: /etc/bumblebee/bumblebee.conf
[ 2106.971244] [DEBUG] X display: :8
[ 2106.971248] [DEBUG] LD_LIBRARY_PATH: /usr/lib/nvidia:/usr/lib32/nvidia:/usr/lib:/usr/lib32
[ 2106.971253] [DEBUG] Socket path: /var/run/bumblebee.socket
[ 2106.971257] [DEBUG] Accel/display bridge: none
[ 2106.971261] [DEBUG] VGL Compression: proxy
[ 2106.971265] [DEBUG] VGLrun extra options: 
[ 2106.971269] [DEBUG] Primus LD Path: /usr/lib/primus:/usr/lib32/primus
[ 2108.532950] [INFO]Response: Yes. X is active.

[ 2108.532969] [INFO]Running application using none.
[ 2108.533157] [DEBUG]Process glxgears started, PID 21841.
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
319 frames in 5.0 seconds = 63.681 FPS
299 frames in 5.0 seconds = 59.696 FPS
[ 2119.472097] [DEBUG]SIGCHILD received, but wait failed with No child processes
[ 2119.472118] [DEBUG]Socket closed.
[ 2119.472143] [DEBUG]Killing all remaining processes.

Looking for solutions, I have uninstalled/reinstalled nvidia (with MHWD, then with pacman) with the same result. I did the same in chroot. This is my knowledge limit.

'optirun -b none nvidia-setting" is working, so the discrete card is detected, but using its “nvidia.conf” gives a black screen (solved with MHWD, after a jumpscare).

What can I do with primusrun? or should I forget this issue?

Thank you!


Update: Using 'optirun -b none < command > doesn’t work. the renderer is Intel:

optirun -b none glxheads
glxheads: exercise multiple GLX connections (any key = exit)
Usage:
  glxheads xdisplayname ...
Example:
  glxheads :0 mars:0 venus:1
Name: :0
  Display:     0x58c558c551b0
  Window:      0x2c00002
  Context:     0x58c558cfe0d0
  GL_VERSION:  3.3 (Compatibility Profile) Mesa 25.0.2-arch1.2
  GL_VENDOR:   Intel
  GL_RENDERER: Mesa Intel(R) HD Graphics 3000 (SNB GT2)

AI giving this directions.

Thanks for sharing all that detailed output — it really helps narrow things down. Since you’re helping someone on Mabox (Manjaro Openbox) and they’re stuck with nvidia-390xx (legacy) using Bumblebee + Primus, here’s a breakdown of what’s happening and how you can help:


:magnifying_glass_tilted_right: Problem Summary

After a recent update:

  • optirun + primusrun fails with:
    primus: fatal: failed to load PRIMUS_LOAD_GLOBAL
  • But optirun -b none runs the app, yet still uses Intel, not NVIDIA.
  • The user has legacy GPU (HD Graphics 3000 + NVIDIA) and must use nvidia-390xx.
  • Discrete GPU is working: nvidia-settings runs (via optirun -b none), but primus fails.

:white_check_mark: Root Cause

This is a known issue with primus and recent glibc / Mesa updates on rolling distros like Manjaro. The primus library is no longer maintained, and it breaks with newer libraries, especially with:

  • glibc >= 2.39
  • mesa >= 24
  • Primus relies on some outdated dynamic linking tricks that now fail.

:hammer_and_wrench: Possible Solutions

:small_blue_diamond: 1. Use virtualgl instead of primus

Primus is broken — switch to virtualgl, which is more compatible.

Install it if not already:

sudo pacman -S virtualgl

Then try:

optirun -b virtualgl glxgears

This should work without needing primus.

To force Bumblebee to use virtualgl, edit:

sudo nano /etc/bumblebee/bumblebee.conf

Set:

Bridge=virtualgl

Also confirm this line:

Driver=nvidia

Then restart Bumblebee:

sudo systemctl restart bumblebeed.service

:small_blue_diamond: 2. Use primus_vk (if Vulkan) – unlikely here

Only mention if they use Vulkan-based apps.


:small_blue_diamond: 3. Avoid Primus entirely

Stick with:

optirun -b none glxgears

…but as you saw, this uses the Intel GPU, not NVIDIA. Why? Because there’s no display bridge in use, so the rendering doesn’t go through the NVIDIA X server.

That’s why you need either:

  • virtualgl (recommended now)
  • Or primus (but it’s broken)

:small_blue_diamond: 4. Double-check the lib paths

Since primus fails with:

primus: fatal: failed to load PRIMUS_LOAD_GLOBAL

It may be related to libprimus.so.0 missing or being mismatched.

Check if these exist:

ls /usr/lib/primus
ls /usr/lib32/primus

If empty or missing, reinstall:

sudo pacman -S primus

But again: even if fixed, it’s fragile. Primus is deprecated.


:small_blue_diamond: 5. Last Resort: Switch to Nouveau

If Bumblebee + legacy NVIDIA is too broken, and you don’t need high performance 3D:

sudo mhwd -r pci video-nvidia-390xx
sudo mhwd -i pci video-linux

This installs the open-source driver — but may underperform for GPU-intensive tasks.


:rocket: Recommendation

:white_check_mark: Best quick fix:
Switch Bumblebee to use virtualgl instead of primus.

sudo pacman -S virtualgl
sudo nano /etc/bumblebee/bumblebee.conf
# Set Bridge=virtualgl
sudo systemctl restart bumblebeed
optirun glxgears

:white_check_mark: Optional: Remove primus if it keeps failing:

sudo pacman -R primus

:bird: Hope this gives you enough input to rumble.

1 Like

Thank you @muzqs !
Now it is working, and virtualgl has doubled the frame rate!.

optirun --debug glxgears
[  629.297674] [DEBUG]Reading file: /etc/bumblebee/bumblebee.conf
[  629.297793] [INFO]Configured driver: nvidia
[  629.298036] [DEBUG]optirun version 3.2.1-21-g0851da6 starting...
[  629.298050] [DEBUG]Active configuration:
[  629.298055] [DEBUG] bumblebeed config file: /etc/bumblebee/bumblebee.conf
[  629.298058] [DEBUG] X display: :8
[  629.298062] [DEBUG] LD_LIBRARY_PATH: /usr/lib/nvidia:/usr/lib32/nvidia:/usr/lib:/usr/lib32
[  629.298066] [DEBUG] Socket path: /var/run/bumblebee.socket
[  629.298070] [DEBUG] Accel/display bridge: virtualgl
[  629.298073] [DEBUG] VGL Compression: proxy
[  629.298077] [DEBUG] VGLrun extra options: 
[  629.298080] [DEBUG] Primus LD Path: /usr/lib/primus:/usr/lib32/primus
[  630.856788] [INFO]Response: Yes. X is active.

[  630.856807] [INFO]Running application using virtualgl.
[  630.857033] [DEBUG]Process vglrun started, PID 8142.
613 frames in 5.0 seconds = 122.582 FPS
604 frames in 5.0 seconds = 120.689 FPS
[  641.431437] [DEBUG]SIGCHILD received, but wait failed with No child processes
[  641.431467] [DEBUG]Socket closed.
[  641.431498] [DEBUG]Killing all remaining processes.

Thanks!

I don’t deserve that much credit for the solution. :wink:

I just copied your post and asked OpenAI (free version) what to do in this situation — graphic hardware stuff isn’t really my favorite subject.

Can’t even remember why I went for an NVIDIA card when I bought this desktop… probably got swayed by the whole CUDA hype back then. :sweat_smile:

Anyway, glad the info helped you figure things out! :penguin:

:bird: