ubuntu 16.04 da "X Error de solicitud fallida: BadValue (parámetro entero fuera de rango para operación)" cuando ejecuta programas OpenGL

18

Tengo dos dos tarjetas gráficas a bordo, una es la integración en la CPU Intel, otra es la tarjeta nvidia.

Quiero usar el integrador para renderizar el escritorio, la tarjeta NV para calcular con cuda. Me cambio para usar el integrador en "Configuración del servidor NVIDIA X", después de instalar el "nvidia-modprobe" funciona como quiero.

pero donde hay un problema con glx, cuando ejecuto glxinfo.

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

En el registro xorg, libglx.so in

[     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"

¿Hay alguna manera de que el glx funcione correctamente?

Hangkongwang
fuente

Respuestas:

10

Resuelto, he configurado lo que quiero. Publiqué la respuesta que se muestra a continuación en GitHub .

  1. Elimine todos los paquetes de Nvidia y reinstale los paquetes de xorg.

    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. Instalar cuda8. Necesitas:

    Presione las teclas Crtl + Alt + F1.

    sudo service lightdm stop  
    sudo init 3  
    

    Utilizo el archivo cuda8 .run para instalarlo, luego, si lo desea, ¿cómo instalar el controlador de la tarjeta nvidia?

    Elige si.

    Se le preguntará si desea instalar nvidia opengl?

    Elija no, esta es una opción crucial, si dice "sí" aquí cubrirá las bibliotecas "mesa *".

    Después de esto, elija el valor predeterminado.

    Después de la instalación, reinicie.

    sudo reboot
    
Hangkongwang
fuente
2
Siga esto: recibí un error similar causado por las actualizaciones de gráficos. Un simple reinicio lo arregló para mi computadora sin necesidad de desinstalar / reinstalar los controladores de nvidia.
Pterosaurio
1
De hecho, eso parece mucho trabajo que puede no ser necesario ... Tuve un problema similar y tuve que arreglar el número de mod de la clave (usé Mod1 en lugar de Mod4)
Anillo Ø
Tuve un error similar al ejecutar las aplicaciones Wine OpenGL (glxgears y glxinfo se estaban ejecutando sin ningún problema) y la solución ha sido simplemente actualizar de nvidia-410 (Ubuntu 18.04) a nvidia-415 (que se encuentra en la ppa de "controladores de gráficos" , versión 415.27-0ubuntu0 ~ gpu18.04.1). Espero que esto pueda ayudar a alguien en el futuro.
Avio
3

Para cualquier persona que llegue a esta pregunta que intente usar OpenGL en un servidor sin cabeza: también puede recibir este mensaje si tiene instalados controladores NVIDIA GLX pero en realidad no tiene una tarjeta NVIDIA en su servidor (por ejemplo, si usa la AMI de AWS Deep Learning Base en una máquina sin GPU).

Para confirmar, intente ejecutar un servidor X con +iglx(que debería permitir la glxinfoejecución) y ver si la glxinfosalida (por ejemplo xvfb-run -s '-screen 0 1400x900x24 +iglx' glxinfo) informa client glx vendor string: NVIDIA Corporation. Si es así, intente cambiar a un AMI sin nada de NVIDIA.

Matthew Rahtz
fuente
3

Baje de categoría el controlador NVIDIA a 340.12

Anteriormente era 384.11 por defecto.

Esto se puede hacer fácilmente desde la software-properties-gtkpestaña "controladores adicionales".

Luego reiniciar.

Ubuntu 16.04, NVIDIA Corporation GF119 [NVS 310].

También hay un problema similar de Steam en: Steam no se iniciará en Ubuntu 16.04

El problema es reproducible con un mínimo GLUT hello world:

#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: el problema ya no ocurre

No he tenido esto por un tiempo, solo actualiza Ubuntu si puedes. Actualmente en 390.116 funcionando perfectamente.

Necesitaba algunos cambios menores en la opción de BIOS para comenzar en mi Lenovo ThinkPad P51: el arranque de Ubuntu 17.10 se atascó en el mensaje "Comenzó el daemon de persistencia de NVIDIA" después de instalar nVidia 384.90

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente
1

Otra situación en la que puede surgir este error es cuando intenta ejecutar ventanas OpenGL mientras se ejecuta en un entorno chroot. Esta publicación tiene una sugerencia para agregar + iglx en el comando xserver para lightdm, lo que resolvió el problema para mí. Poniendo esta respuesta aquí para visibilidad, ya que la otra respuesta no apareció prominentemente en Google.

aleksk
fuente
0

Recibí el mismo mensaje de error pero fue causado por glutInitContextVersion (4, 0); porque mi hardware no soportaba OpenGL 4.0 cambié la llamada a glutInitContextVersion (3, 3); y las cosas se pusieron bien. Estoy usando un controlador NVidia patentado.

vollitwr
fuente
1
¿Podría explicar cómo lo hizo?
Zanna
glutInitContextVersionno está definido: en freeglut3-dev 2.8.1, Ubuntu 15.10, relacionado: stackoverflow.com/questions/22055522/… Pero esta es una pista interesante.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Pero también lo intenté glfwWindowHint(GLFW_CONTEXT_VERSIONy no resolvió el problema :-( stackoverflow.com/questions/18113270/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件