Ubuntu 16.04 gibt "X Fehler bei fehlgeschlagener Anforderung: BadValue (Integer-Parameter außerhalb des Bereichs für den Betrieb)" beim Ausführen von OpenGL-Programmen

18

Ich habe zwei zwei Grafikkarten an Bord, eine ist die Integration in Intel-CPU, eine ist die NVIDIA-Karte.

Ich möchte die Integration verwenden, um Desktop zu rendern, die NV-Karte mit cuda berechnen. Ich wechsle zu "NVIDIA X Server-Einstellungen", nachdem ich "nvidia-modprobe" installiert habe, funktioniert es wie gewünscht.

aber wo ist ein Problem mit glx, wenn ich glxinfo laufen lasse.

name of display: :0
X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  154 (GLX)
Minor opcode of failed request:  24 (X_GLXCreateNewContext)
Value in failed request:  0x0
Serial number of failed request:  37
Current serial number in output stream:  38

Im xorg logge es libglx.so ein

[     3.597] (II) "glx" will be loaded by default.
[     3.597] (II) LoadModule: "glx"
[     3.599] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[     3.612] (II) Module glx: vendor="X.Org Foundation"

Gibt es eine Möglichkeit, wie ich den glx zum Laufen bringen kann?

Hangkongwang
quelle

Antworten:

10

Gelöst habe ich eingerichtet was ich will. Ich habe die unten gezeigte Antwort bei GitHub gepostet .

  1. Entfernen Sie alle Nvidia-Pakete und installieren Sie xorg-Pakete neu.

    sudo apt-get purge nvidia*  
    sudo apt-get install --reinstall xserver-xorg-video-intel libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core   
    sudo dpkg-reconfigure xserver-xorg   
    
  2. Installieren Sie cuda8. Du brauchst:

    Drücken Sie Strg + Alt + F1.

    sudo service lightdm stop  
    sudo init 3  
    

    Ich verwende die .run-Datei von cuda8, ​​um sie zu installieren. Bei der Installation wird gefragt, ob Sie den NVIDIA-Kartentreiber installieren möchten.

    Wähle ja.

    Sie werden gefragt, ob Sie nvidia opengl installieren möchten.

    Wählen Sie "Nein". Dies ist eine wichtige Wahl. Wenn Sie hier "Ja" sagen, werden "mesa *" - Bibliotheken berücksichtigt.

    Danach wählen Sie die Standardeinstellung.

    Starten Sie nach der Installation neu.

    sudo reboot
    
Hangkongwang
quelle
2
Follow-up zu diesem - Ich habe einen ähnlichen Fehler durch Grafik-Updates verursacht. Ein einfacher Neustart reparierte es für meinen Computer, ohne dass nvidia-Treiber deinstalliert / neu installiert werden mussten.
Flugsaurier
1
In der Tat scheint das eine Menge Arbeit zu sein, die möglicherweise nicht notwendig ist ... Hatte ein ähnliches Problem und musste die Schlüssel-Mod-Nummer (Mod1 anstelle von Mod4 verwendet) korrigieren
Ring-Ø
Ich hatte einen ähnlichen Fehler beim Ausführen von Wein-OpenGL-Anwendungen (glxgears und glxinfo liefen ohne Probleme) und die Lösung bestand darin, einfach ein Upgrade von nvidia-410 (Ubuntu 18.04) auf nvidia-415 (gefunden auf der "Grafiktreiber" -ppa- Version) durchzuführen 415,27-0ubuntu0 ~ gpu18.04.1). Hoffe, dass dies jemandem in der Zukunft helfen kann.
Avio
3

Wenn Sie zu dieser Frage kommen und versuchen, OpenGL auf einem Headless-Server zu verwenden, wird diese Meldung möglicherweise auch angezeigt, wenn Sie NVIDIA GLX-Treiber installiert haben, sich jedoch keine NVIDIA-Karte in Ihrem Server befindet (z. B. bei Verwendung von AWS Deep Learning Base AMI) auf einer Maschine ohne GPU).

Versuchen Sie zur Bestätigung, einen X-Server mit +iglx(der ausgeführt werden sollte glxinfo) auszuführen, und prüfen Sie, ob glxinfoAusgabeberichte (z . B. xvfb-run -s '-screen 0 1400x900x24 +iglx' glxinfo) vorliegen client glx vendor string: NVIDIA Corporation. Wenn dies der Fall ist, wechseln Sie zu einem AMI ohne NVIDIA-Inhalte.

Matthew Rahtz
quelle
3

Rüsten Sie den NVIDIA-Treiber auf 340.12 herunter

Zuvor war 384,11 standardmäßig.

Dies kann einfach über die software-properties-gtkRegisterkarte "Zusätzliche Treiber" erfolgen.

Starten Sie dann neu.

Ubuntu 16.04, NVIDIA Corporation GF119 [NVS 310].

Es gibt auch ein ähnliches Steam-Problem bei: Steam startet unter Ubuntu 16.04 nicht

Das Problem ist mit einer minimalen GLUT-Hallo-Welt reproduzierbar:

#include <stdlib.h>

#include <GL/glut.h>

int main(int argc, char *argv[]) {
    glutInit(&argc, argv);
    glutInitWindowSize(800, 600);
    glutInitWindowPosition(200, 100);
    glutCreateWindow(argv[0]);
    glutMainLoop();
    return EXIT_SUCCESS;
}

Ubuntu 19.04: Das Problem tritt nicht mehr auf

Ich hatte das schon eine Weile nicht mehr, aktualisiere einfach Ubuntu, wenn du kannst. Derzeit auf 390.116 funktioniert einwandfrei.

Benötigte einige geringfügige Änderungen an der BIOS-Option, um mit meinem Lenovo ThinkPad P51 zu starten : Ubuntu 17.10-Boot blieb nach der Installation von nVidia 384.90 bei der Meldung "Started NVIDIA Persistence Daemon" hängen

Ciro Santilli ist ein Schauspieler
quelle
1

Eine andere Situation, in der dieser Fehler auftreten kann, ist der Versuch, OpenGL-Fenster in einer Chroot-Umgebung auszuführen. Dieser Beitrag enthält einen Vorschlag zum Hinzufügen von + iglx im xserver-Befehl für lightdm, wodurch das Problem für mich gelöst wurde. Stellen Sie diese Antwort hier für die Sichtbarkeit, da die andere Antwort nicht prominent auf Google angezeigt wurde.

aleksk
quelle
0

Ich hatte die gleiche Fehlermeldung, die jedoch durch glutInitContextVersion (4, 0) verursacht wurde. Da meine Hardware OpenGL 4.0 nicht unterstützt, habe ich den Aufruf in glutInitContextVersion (3, 3) geändert . und die Dinge wurden gut. Ich verwende einen proprietären NVidia-Treiber.

vollitwr
quelle
1
Können Sie erklären, wie Sie das gemacht haben?
Zanna
glutInitContextVersionist undefiniert: in freeglut3-dev 2.8.1, Ubuntu 15.10, verwandt: stackoverflow.com/questions/22055522/… Aber das ist ein interessanter Hinweis.
Ciro Santilli
Aber ich versuchte auch glfwWindowHint(GLFW_CONTEXT_VERSIONund es löste nicht das Problem :-( stackoverflow.com/questions/18113270/…
Ciro Santilli