Libreoffice: Das Spreadsheet of Death

Vor einigen Wochen fiel jemandem auf, daß sein PC jedes mal lahmte, wenn er im LibreOffice eine bestimmte Tabelle ansah und editieren wollte. Das Tabellenblatt war aber gar nicht so groß, wie man glauben könnte, aber es war …

Das Spreadsheet of Death

Was passiert mit einem Linuxsystem, wenn der Xorg-Serverprozess bei 100% ankommt? Es bleibt faktisch stehen. Wer das mal live mit Libreoffice auf einem Ryzen 1500X erleben will, der kann sich noch dies Dokument ziehen: Das Spreadsheet of Death Beispiel. Das richtige ist leider wegen Datenschutz nicht öffentlich verfügbar und war ein bisschen länger.

Die Ursache ist, daß der Spellchecker, also die Rechtschreibkorrektur, alle Feldinhalte immer und immer wieder prüft, für falsch betrachtet und dann mit einem neuen Antialising-Malframework einen blauen oder roten Krikkel unter den Feldeintrag zeichnet.  Das neue Framework ist aber so inperformant, daß der Xorg Prozess auf einem CPU Kern bei 100% Last arbeitet.

Bei jedem Scrollen geht die Rechtschreibkorrektur wieder von vorn los, was direkt zum zähesten PC Erlebnis ever führt.  In TOP sah das dann so aus:

[~]$ top -c -b -n 1 | head -n 20
top - 11:54:26 up  2:01,  1 user,  load average: 0,51, 0,28, 0,20
Tasks: 409 total,   2 running, 407 sleeping,   0 stopped,   0 zombie
%Cpu(s): 14,2 us,  2,1 sy,  0,0 ni, 83,0 id,  0,0 wa,  0,0 hi,  0,7 si,  0,0 st
MiB Mem :  15967,5 total,   5456,9 free,   5122,1 used,   5388,4 buff/cache
MiB Swap:   7810,9 total,   7810,9 free,      0,0 used.  10141,6 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1957 root      20   0  857132 191608 150596 R 100,0   1,2   6:16.45 /usr/libexec/Xorg vt2 -displayfd 3 -auth /run/u+
   2452 marius    20   0 3841504 252908 104348 S   6,2   1,5   4:15.81 cinnamon --replace
  13809 marius    20   0  126080  10728   8724 S   6,2   0,1   0:01.11 ssh -C -Y xxx@yy.yy.yy.yy
  14410 marius    20   0  116004   4228   3412 R   6,2   0,0   0:00.02 top -c -b -n 1
      1 root      20   0  171508  15268   9792 S   0,0   0,1   0:04.67 /usr/lib/systemd/systemd --switched-root --syst+
      2 root      20   0       0      0      0 S   0,0   0,0   0:00.01 [kthreadd]
      3 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 [rcu_gp]
      4 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 [rcu_par_gp]
      6 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 [kworker/0:0H-kblockd]
      7 root      20   0       0      0      0 I   0,0   0,0   0:03.58 [kworker/u16:0-kcryptd/253:0]
      8 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 [mm_percpu_wq]
      9 root      20   0       0      0      0 S   0,0   0,0   0:00.08 [ksoftirqd/0]
     10 root      20   0       0      0      0 I   0,0   0,0   0:02.65 [rcu_sched]

Das wurde nicht nur über den Bugzilla von RedHat berichtet, sondern auch von anderer Seite an die Entwickler bei LibreOffice gemeldet. Daher gibt es jetzt, so gefühlt 4 Monate später, einen Bugfix:

https://cgit.freedesktop.org/libreoffice/core/commit/?id=bdd149b1ff3d43b94cadc0d43365100c287c7639

Improve spell checking performance and impl. in several ways:
* do synchronous spell checking, avoiding an idle handler
* avoid continuous invalidations caused per-cell by spell-checking
* cache spell-checking information for a given SharedString to avoid repeated checking of frequently recurring strings.

 

Das mit dem Cache für gleiche Inhalte hätte man glaube ich bei Version 0.1 einbauen sollen, das ist nämlich naheliegend 😉

Jetzt fragt Ihr Euch, wieso berichte ich erst jetzt davon… Tja, „a maliciously crafted document can lead to a DOS like attack on linux“. Das wollten wir natürlich nicht noch fördern 😉  Es werden zwar nur die sichtbaren Zeilen geprüft, aber alle Spalten. Da jetzt der Patch vorliegt und verteilt wird, kann man es ruhig erzählen 🙂

Office: Tabellen als Bild abspeichern

Ihr wollt eine Tabelle aus OpenOffice Calc als Bild abspeichern? oh nein, so ein Pech, das geht nämlich nicht. Aber es gibt eine Lösung 🙂

Office: Tabellen als Bild abspeichern

Wer noch OpenOffice benutzt hat ein kleines Problem, auch wenn man will, man kann keine Tabellen als Grafiken speichern. LibreOffice kann das aber, also braucht Ihr nichts weiter machen, als das Dokument auf einen LibreOffice PC zu öffnen und das dort zu machen:

Libreoffice: Tabelle mit einem ContextMenü in dem man die Tabelle als Grafik abspeichertBeispiel mit einer Tabelle, die die Expotentialfunktion erklärt.

In LibreOffice klickt Ihr einfach die Tabelle an und dann im Rechte Mausbutton „Als Bild exportieren“ auswählen.  Nun dürft Ihr das Bild speichern, aber es ist wichtig, daß Ihr die Grafik nicht einfach als PNG abspeichert, sondern als SVG. Das ist erstmal ein Vector Grafikformat und damit skalierbar und deutlich kleiner als ein PNG 😀  Leider muß man das immer auswählen, da PNG voreingestellt ist. Die PNG Speicherfunktion leidet zudem unter einer „Ich lebe noch im Jahr 2000“ Auflösung. Die Bilder sehen nicht wirklich gut aus. Aber, mit SVG, ist es einfach superscharf, egal auf welchem Display 😉

LibreOffice doch keine Alternative zu OpenOffice ?

Wer von LibreOffice enttäuscht ist und lieber OpenOffice benutzen will, ich kann es verstehen. Man sollte ja annehmen, daß LibreOffice als „das“ gepflegtere Officepaket weniger Probleme hätte, ergo auch „kompatibler“ ist. Leider ist das nicht so. Meine Fedora LibreOfficeversion konnte genau „gar kein“ Dokument öffnen und ist dabei auch noch laufend abgeschmiert. Da das Update von Fedora 23 auf 24 auch noch meine OpenOffice Installation ungefragt durch LibreOffice ersetzt hat, ist es Zeit für einen Neustart.

Erstmal weg mit der Zwangsbeglückung

Zunächst löschen wir mal LibreOffice, weil es sich mit einer RPM basierten Installation von OpenOffice beissen würde:

dnf erase "libreoffice*"

Dann laden wir uns OpenOffice von einem Mirror herunter:

http://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.apache.org/dist/openoffice/4.1.3/binaries/de/Apache_OpenOffice_4.1.3_Linux_x86-64_install-rpm_de.tar.gz
http://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.apache.org/dist/openoffice/4.1.3/binaries/de/Apache_OpenOffice_4.1.3_Linux_x86_langpack-rpm_de.tar.gz

In der Version ist der letzte Hotfix auch drin, also kann das ohne weiteres installiert werden.

Dazu legt Ihr am besten einen leeren Ordner an, z.B. Programme/OpenOffice :

tar xzvf Apache_OpenOffice_4.1.3_Linux_x86_langpack-rpm_de.tar.gz
tar xzvf Apache_OpenOffice_4.1.3_Linux_x86-64_install-rpm_de.tar.gz

Dann wechselt hier in das Verzeichnis „de/RPMS“ (cd de/RPMS) und führt den Befehl aus:

sudo dnf install *x86_64.rpm ./desktop-integration/openoffice4.1.3-redhat-menus-4.1.3-9783.noarch.rpm

Das installiert die 64Bit Version von OpenOffice. Wer die 686er Version braucht, muß das etwas anpassen.

Kaum das OpenOffice korrekt installiert ist, kann man auch wieder Excel 2007 Dokumente öffnen, die man leider im Geschäftsleben braucht.

Jetzt die Fragen an Euch:

Welche Probleme habt Ihr mit Eurem Officepaket ?
Funktioniert Libre bei Euch sauber, oder seid Ihr auch auf OpenOffice angewiesen ?Misfällt Euch der Startbildschirm von Libre auch so wie mir ? Der sieht irgendwie „Billig“ aus.

Ich bin gespannt auf Euren Input.