Schlagwort-Archive: NVidia

BitBastelei #300 – Externe Grafikkarte am PC/Server? Quick’n’Dirty-Weg

BitBastelei #300 - Externe Grafikkarte am PC/Server? Quick'n'Dirty-Weg

(534 MB) 00:21:27

2018-09-16 10:00 🛈

Grafikkarten im Server? Was für dein Ein oder Anderen vermutlich seltsam klingt ist doch gar nicht so ungewöhnlich, denn mit diesen kann man nicht nur Spiele spielen, sondern auch hoch-parallelisierte Berechnungen durchführen. Da ich aktuell mit diversen dieser Techniken herumexperimentiere soll also auch mein Home-Server eine solche erhalten. Nur gibt es da so ein paar Hindernisse.

[nvidia/qt5/kdenlive] Segfault on various KDE-software using NVIDIA 361.16

Uhm crap. The last system update just pulled a new beta version of NVIDIAs binary driver. Usually not that much of a deal, I went for testing due to a bug in their stable driver some years ago and never ran into a problem. Well, at least until now.  This time the testing-curse found its way into my system and I found myself no longer able to start my video editor kdenlive. Segmentation Fault. I suspected my setup first since I am running a rather unusual multihead configuration but could also with just one monitor I ran into the same problem. Well, looks like I have to dig deeper. Some gdb later at least a clue:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff0b640c5 in XScreenCount (dpy=0x0) at Macros.c:109
109	int XScreenCount(Display *dpy) { return (ScreenCount(dpy)); }
(gdb) bt
#0  0x00007ffff0b640c5 in XScreenCount (dpy=0x0) at Macros.c:109
#1  0x00007fffea7f50da in glXGetClientString () from /usr/lib/libGLX.so.0
#2  0x00007ffff7fed3b3 in ?? () from /usr/lib/qt/plugins/xcbglintegrations/libqxcb-glx-integration.so
#3  0x00007ffff7fed5b1 in ?? () from /usr/lib/qt/plugins/xcbglintegrations/libqxcb-glx-integration.so
#4  0x00007ffff686fc7b in QSGRenderLoop::instance() () from /usr/lib/libQt5Quick.so.5
#5  0x00007ffff68a19e5 in QQuickWindowPrivate::init(QQuickWindow*, QQuickRenderControl*) () from /usr/lib/libQt5Quick.so.5
#6  0x00007ffff694b68d in QQuickView::QQuickView(QWindow*) () from /usr/lib/libQt5Quick.so.5
#7  0x00000000006bd190 in ?? ()
#8  0x00000000006c3d7b in ?? ()
#9  0x00000000007af3cc in ?? ()
#10 0x000000000046346b in ?? ()
#11 0x00007ffff188e610 in __libc_start_main () from /usr/lib/libc.so.6
#12 0x0000000000463949 in _start ()

So XScreenCount or libGLX is the suspect. In my case GLX is provided by NVIDIAs binary driver (nouveau had limited multihead support last time I checked). Also some QT5-stuff is mentioned in the backtrace.

A bit of search engine voodoo later it turns out NVIDIA already acknowledged the problem. Aaron Plattner writes:

I reproduced the problem and tracked it down to this buggy code in Qt5’s qxcbglxintegration.cpp:

static bool vendorChecked = false;
    static bool glxPbufferUsable = true;
    if (!vendorChecked) {
        vendorChecked = true;
        const char *glxvendor = glXGetClientString(glXGetCurrentDisplay(), GLX_VENDOR);
        if (glxvendor && !strcmp(glxvendor, "ATI"))
            glxPbufferUsable = false;
    }

When this code is called during sddm-greeter startup, there’s no current GLX context, so this gets called with a NULL argument.

While here SDDM is not the problem I think kdenlive, which uses similar libraries, runs into the same problem. He also pushed a corresponding patch to NVIDIAs GIT-repository. Sadly the current HEAD is not 100% ABI compatible with the official driver release. Also I really didn’t want to get into my distributions xorg-packaging-foo. Ultimately I reverted to the current NVIDIA stable version 358.16 to get back into business. So – lesson confirmed: Beta releases can fix problems or cause problems. But who doesn’t like a bit of stability-gambling, right?

BitBastelei #168 – PC aufrüsten: CPU, RAM, Lüfter, Grafikkarte

BitBastelei #168 - PC aufrüsten: CPU, RAM, Lüfter, Grafikkarte

(685 MB) 01:02:26

2015-10-04 10:00 🛈

Mein Rechner hat ist sicher noch nicht Reif für die Müllhalde, aber es lässt sich doch noch einiges rausholen: CPU, RAM, Grafikkarte – alles Bauteile, welche sich schnell und Einfach austauschen lassen. In meinem Fall gib es nichts Neues, sondern lediglich gebrauchte Komponenten, welche etwas mehr Leistung bringen sollten. Der bisherige 4-Kern-Prozessor muss einem 6-Kerner weichen, die 20GB RAM werden auf das CPU-Limit von 24GB ergänzt und die beiden treibertechnisch nur noch notdürftig bedienten GeForce 6600GT aus dem Jahr 2004 weicht einer 8 Jahre neueren GTX660.

Der Wechsel der CPU ging schnell und ohne Probleme. Der selbstgebastelte Lüfter musste jedoch schnell einem „Echten“ weichen. Auch die Grafikkarte bereitete keine nennenswerten Probleme. Der Arbeitsspeicher ist hardwaretechnisch schnell getauscht, bereitete aber den größten Ärger: Durch massivie Kompatibilitätsprobleme fühlte ich mich wie in den 90ern. Am Ende steht aber ein aufgefrischtes System, welches mit wenig Geld für die nächsten Jahre gerüstet sein sollte.

Inhalt:

00:00:00 Unboxing – Good Package, bad package
00:02:51 CPU-Specs
00:08:46 RAM-Specs
00:10:09 Blick auf’s Mainboard
00:12:03 HowTo: RAM austauschen
00:14:54 HowTo: Intel-CPU austauschen
00:22:18 Redneck-Kühler
00:27:34 Fehlersuche: Kein Boot nach Aufrüsten
00:32:34 RAM-Kompatibilitäten: Alles läuft – nur nicht stabil…
00:35:51 Lasttests & Benchmarks – lassen wir das…
00:37:53 Arctic Freezer 13: Einbau & Erster Eindruck
00:46:58 Grafikkartenauswahl
00:53:44 Grafikkarteneinbau
00:54:28 VGA vs. DVI vs. HDMI vs. DisplayPort
00:56:21 Grafiktest

Links zum Thema:
26:05 Lüfter-Pinbelegung im Video Festplattenlüfter-Improvisation
55:40 VGA-Adapter
56:53 KVM-Switch = Umschalter für Tastatur, Maus und Monitor

Nvidia/X.org: OpenGL-Fehler bei einigen Spielen

Vor kurzem mussten die mehr als 10 Jahre alten Grafikkarten meines Rechners einem neueren Modell weichen. Schneller, weniger Strom und – das Wichtigste – ich kann wieder die aktuelle Treibergeneration nutzen. Die Umrüstung ist unter Linux ja kein Problem: Umstecken, den alten Nvidia 340 „Legacy“-Treiber gegen einen aktuellen 346er ersetzen und fertig ist. Dank nvidia-settings sind die Monitore schnell sortiert und der 3D-Test glxgears zeigt trotz Rendering auf 4 Monitoren zugleich solide 60 Frames (aka vsync-Maximum). Auch Videobearbeitung und Co reagieren solide. Also schnell die Arbeit fertig gemacht und eine Runde zocken. Oder auch nicht.

X Error of failed request: BadAlloc (insufficient resources for operation)
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)

so lautete die Meldung, welche ich beim Starten von RTCW:ET erhielt. Na gut, eventuell ja was daran kaputt, also graben wir mal UT99 aus. Nichts. UT2004? Nichts. $randomgame in wine? Nichts. WTH?

Genervt klicke ich mich durch meinen Game-Ordner und bleibe bei OpenTTD und ArmagetronAD hängen. Beide funktionieren fehlerfrei und dürfen nun den Feierabend versüßen. Die nächsten Tage blieb keine Zeit für Spiele.

Heute konnte ich mich dem Problem nochmal genauer annehmen und mein Kopf machte soeben Bekanntschaft mit der Tischkante. Wer aufgepasst hat wird feststellen: Nur binär vertriebene Spiele machten das Problem, Open-Source Games laufen. Kein Wunder, denn letztere werden – egal wie alt – passend zum System kompiliert. 64Bit. Die Binärspiele hingegen laufen – wie auch wine – im 32 Bit Modus und greifen entsprechend auf die Kompatibilitätslibraries zurück…die ich natürlich nicht aktualisiert hab. Also schnell die lib32-nvidia-340xx-libgl gegen die aktuelle lib32-nvidia-libgl getauscht und voilà: Auch die Binärblobs können auf wundersame Weise wieder 3D. Doh‘!

Arch Linux: Only console users are allowed to run the X server

Üblicherweise nutze ich an meinem Haupt-PC ein Multihead-Setup, also mehrere Monitore. Was zum Arbeiten praktisch ist bringt Spiele leider gerne aus dem Tritt. Um dem aus dem Weg zu gehen habe ich bisher über startx einen zweiten X-Server gestartet – direkt aus der GUI, somit war auch Pulseaudio & Co immer direkt nutzbar. Seit einem der letzten Updates, vermutlich die neue Rootless-Funktion von xorg 1.16, erscheint nur noch die Meldung „Only console users are allowed to run the X server“.

In einem Post auf Github wird empfohlen eine Datei /etc/X11/Xwrapper.config mit dem Text „allowed_users=anybody“ zu erzeugen. Generell ein Fortschritt, nun bricht jedoch beim Start der propritäre NVidia-Treiber wie folgt zusammen:

(EE) NVIDIA(GPU-0): EVO Push buffer channel allocation failed
(EE) NVIDIA(GPU-0): Failed to allocate EVO core DMA push buffer
(EE) NVIDIA(0): Failing initialization of X screen 0

Leider konnte ich den genauen Auslöser nicht finden – die Rechte sinds nicht, setuid/setgid oder start als root zeigt keine Änderung. Auch ein Wechsel auf die freien Nouveau-Treiber zeigt keine Änderung, hier kann in der zweiten Sitzung kein DRI inizialisiert werden. Glücklicherweise hat der freie Treiber deutlich weniger Rendering-Bugs – nicht nur, dass Chromium endlich wieder nutzbar ist – auch Spiele laufen nun im Multi-Monitor-Modus. Zwar erscheint das Bild immer auf den linken Monitor, aber mit einem VGA-Umschalter als Hardware-Workarround kann ich mir da behelfen.

NVidia X.Org Video-RAM information leak

Bereits seit etwa einem Jahr ist mir beim Start von X.Org – oder eher gesagt beim laden von Gnome – ein seltsames Flackern auf mehreren Rechnern aufgefallen. Meist trat es nach abstürzen oder Neustarts auf, nicht jedoch wenn der PC vollständig abgeschaltet war. Da mir einige der Muster im Flackern bekannt vor kamen griff ich Heute mal zur Digitalkamera und zeichnete es auf. Das Ergebnis: Es ist tatsächlich kein wildes Flackern, sondern Bildausschnitte diverser vor dem Neustart verwendeten Programme! Hierbei ist es nicht das letzte Bild, sondern z.B. auch Programme, welche im Hintergrund aktiv waren (also z.B. auch Ausschnitte des Browsers wenn der Bildschirmschoner zuletzt aktiv war). Im heutigen Fall hatte ich den Rechner sogar kurz (~500mA) vom Strom genommen (Stecker gezogen), da sich der Kernel aufgehangen hatte und der PC keinen Reset-Knopf besitzt – dennoch konnte man Bildausschnitte erkennen. Bisher ist mir das Phänomen auf meinem Privat-PC (ArchLinux, GeForce 8600GT, X.org 1.12.2-1, nvidia 295.53-1, Xinerama Multihead) und meinem Arbeits-PC (GeForce 9600GT, X.Org 1.11.2-r2, NVidia 295.20-r1, NVidia TwinView) begegnet. Könnte mir durchaus vorstellen, dass ein Angreifer über diese Methode die „Sicherheit“ des Bildschirmschoners umgehen und so an Informationen über die verwendeten Programme gelangen könnte. Da hierzu offenbar nur ein gewisser Zustand der Grafikkarte erreicht werden muss könnte dies auch per OS auf einem Stick erfolgen und so die Informationen trotz Festplattenverschlüsselung preis geben. Im Gegensatz zu den bekannten Cold-Boot-Attacks muss hierzu nichts an der Hardware geschraubt werden.

—EN—
About a year ago i noticed a strange flickering while loading X.Org/GNOME on several of my PCs. It appeared mostly after crashed and restarts, not if the PC was turned off for some time. Since i noticed several patterns inside this flicker i grabed my camera today and recorded the process. The result: its not a random flicker but image-parts of programs that ran before the reboot! They where not limited to the last shown picture before the boot – also programs that where running but not shown (like a browser when a screensaver was active) appeared. In today’s case i even cut the power (~500ms via power cord, Kernel crashed and the pc has no reset-button) – still i was able to recover image-parts. I could observe the behaviour an my home-PC (ArchLinux, GeForce 8600GT, X.org 1.12.2-1, nvidia 295.53-1, Xinerama Multihead) and my PC at work (GeForce 9600GT, X.Org 1.11.2-r2, NVidia 295.20-r1, NVidia TwinView). I could imagine that attackers could use this to bypass a screensaver and get information about running programs. Since you only need to reach a certain state of the GPU it should be possible to use an USB-based OS and grep this info even if the local harddisk is encrypted. Contrary to known Cold-Boot-Attacks there is no need to open the case.

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2012/06/capture-clean-300×226.jpgBild: https://www.adlerweb.info/blog/wp-content/uploads/2012/06/capture-cap-300×226.jpg

http://www.youtube.com/watch?v=fuHcbQxl6d0