Linux – Tilix – GTK – D und Wischiwaschi

Supi, Neues Jahr, neue Software zum Testen. Diesmal „Tilix“ . Ein Terminalprogramm das nach Human-Interface-Paradigma  von GTK entworfen wurde. Und leider sieht es auch genauso aus 🙂

Um was geht es eigentlich ?

So sieht unser Testobjekt aus :

leeres Tilix TerminalTilix ist das neue Fedora 27 Standard Terminalprogramm und löst damit GNOME-Terminal ab. Das führte bei einer frischen Installation von Fedora 27 dann natürlich zu diversen Problemen, denn es reagiert komplett anders als GNOME-Terminal (ab jetzt nur noch „GT“ genannt). Man könnte argumentieren, daß es sich bestimmte Shortcuts jetzt so verhalten, wie man das „erwarten“ würde. Dazu muß man allerdings wissen, daß Tilix krampfhaft versucht das Terminalfenster auf genau der offenen Größe zu belassen und dabei möglichst viel Inhalt da reinzuquetschen.

Beispiel:

Am sieht ein Tilix Fenster in dem viele,viele Terminalfenster kaskadisch immer kleiner angezeigt werden.

Wie man hier sehen kann, ist das u.U. nicht besonders sinnvoll. Verantwortlich für diese lustige Anordnung sind die beiden „plus“ Knöpfe neben der Sessionauswahl links oben, das ist die mit dem „3/3“ Text.

Im ersten Moment fand ich die Funktion geckisch, aber nüchtern betrachtet, macht die so nur Sinn, wenn man das Fenster auf Fullscreengröße geöffnet hat.  Das eingebaute Tiling wird vermutlich viele Freunde finden. Ganz abgeneigt bin ich dem nicht, aber ich ziehe die Einrastfunktion von Cinnamon für ganze Fenster vor. Zwischen den Fenstern kann dann nämlich mit ALT-TAB wechseln.

Die Menüs entsprechen den GTK Vorgaben und sind damit derzeit „das dämlichste was man haben kann“. Der Trend, Context-Menü-Container zu recyclen, also beim Aufruf von Untermenüs kein neues Containerfenster , sondern das vom Menü dadrüber zu recyclen aka nur den Inhalt des Menücontainers zu tauschen, entspricht nicht meinem persönlichen Geschmack.

Auch die Option „Show File Browser“ ist vollkommen Ga-Ga und hat dort nichts zu suchen :

komplett fehl am PlatzWas genau soll so eine Funktion an der Stelle bitte tun ? Ich habs natürlich ausprobiert und kann sagen: Nichts. Denn statt mit dem PDF irgendwas zu machen, z.b. den Filelink in das Terminal zu kopieren, passiert … na ? …. wer räts ? … Genau das nicht! Es ist gar kein Filerequester, es ist gleich ein neues Fenster von Nemo/Nautilus, also genau das was da steht: Mach den Filebrowser auf!  WARUMMMMMMMM!?!!?!!!?!!!!!!!!!!

Phobos – altgriechisch für „Furcht, panische Angst“

Schauen wir nach dem Exkurs in den Wahnsinn mal, auf was Tilix eigentlich aufbaut :

Installieren:
tilix x86_64 1.6.4-5.fc26 updates 724 k
Installiere Abhängigkeiten:
gtkd x86_64 3.6.6-2.fc26 updates 8.5 M
ldc-druntime x86_64 1:1.3.0-1.fc26 updates 550 k
ldc-phobos x86_64 1:1.3.0-1.fc26 updates 2.0 M

Es wird uns also bei der Installation eine Laufzeitumgebung von … taterata… D installiert und gleich noch Phobos dazu.

Praktisch alle Nicht-Programmierer und vermutlich selbst von den Middleaged DevOps kennen D nur die wenigsten. D wurde Ende der 90er!!! Jahre im OOP Hype als auf C-basierendem OOP Ersatz zu C++ entwickelt. Als wenn E und F aus den 80ern nicht schon gereicht hätten 🙂

Über D … man kann es hier prima verwenden -> 😀

D war nicht in den Heise Top 10 für 2017 ,
ist keine POP ( Problem Orientierte Programmiersprache —- Ich weiß!!! ich weiß!!! 😀 ) und damit trendy,
in den Stackoverflow TOP 20 der meistgehassten Programmiersprachen kommt es auch nicht vor,
und in den Top 20 der JAX für 2017 kommt D auch nicht  vor.  Da selbst PERL noch in deren TOP 20 ist und das verdammt lange tod ist, lasse ich mich dazu verleiten D auch als irrelevante Größe zu bezeichnen aka tod.

Ein Programm in einer toten Programmiersprache und auf Basis von panischer Furcht , das kann kein gutes Omen sein. Und genau in dem Geiste scheint Phobos gemacht worden zu sein, denn es beschreibt sich so :

„Each module in Phobos conforms as much as possible to the following design goals. These are goals rather than requirements because D is not a religion, it’s a programming language, and it recognizes that sometimes the goals are  contradictory and counterproductive in certain situations, and programmers have jobs that need to get done“

Kurzform „WischiWaschi“

Das will man über eine wichtige Komponente seines Rechners nicht lesen.. Übersetzung:

Jedes Modul in Phobos entspricht so weit wie möglich den folgenden Designzielen. Diese Ziele sind eher Ziele als Anforderungen, denn D ist keine Religion, es ist eine Programmiersprache, und es erkennt, dass die Ziele manchmal widersprüchlich und kontraproduktiv in bestimmten Situationen sind, und Programmierer haben Jobs, die erledigt werden müssen“. ( Danke an Deepl.com )
(An.d.R. die Designziele werden gar nicht in der dnf info von phobos genannt k.a. wieso die die dann erwähnen.)

Natürlich hat ein Programm klare Ziele:

  1. Es muß eine bestimmte Funktion erfüllen
  2. Es darf keine Fehler enthalten
  3. Es darf bei Design keine Sicherheitslücken enthalten
  4. Es muß bedienbar bleiben

Die Formulierung wie „Aber manchmal haben Programmierer Jobs, die erledigt werden müssen.“ lassen mich an der Qualität des Codes schon von vornherein zweifeln. „D sein keine Religion“ als wenn Ziele eine Religion bräuchten ? Das ist so typischer „Ich weiß alles besser als Ihr“ Manifestsülz. Glauben gehört in die Kirche und Ziele im Leben sind ein Eigenschaft von Menschen. Und wenn ich das Ziel habe, das coolste, aber total unsicherste Programm des Planeten zu bauen, dann tue ich das, weil ich ein Mensch bin. Macht das Sinn , Nö, aber Spaß 😀  Programmierer, deren Software für andere Gedacht ist, sollten andere Maßstäbe haben: Sicherheit, Stabilität, Benutzbarkeit.

Wie Ihr hier lesen könnte, kommt „Design“ in der kurzen Liste nicht vor.  Firmenchefs und Designer sehen das natürlich anders, weil EyeCandy verkauft sich gut, aber man kann Design auch an Platz 4 der Liste haben und ein sicheres Programm trotzdem gut aussehen lassen 😉

Fazit

Die vielen unnötigen Ebenen des Terminalseins ( da gibts 4 von in Tilix ) haben keinen brauchbaren Vorteil (für mich), der Unterbau macht mir Angst, die wenig bis gar nicht auditierte Programmiersprache nebst Compiler, sinnlose Features und ein grässliches Design lassen für mich nur eine Option zu:

dnf erase tilix -y

und danach die Platte desinfizieren 😉

Linux – Fedora – Spectre & Meltdown Kernels nicht fehlerlos

Seit einigen Tagen sind ja die „gepatchten“ Fedora Kernel zu den Specture & Meltdown Schwachstellen verfügbar. Leider kommt es bei 32 und 64 Bit zu diversen Bugs, die ganze Serverfarmen inoperabel machen.

Der Kernel OOPS

so sieht so ein Kernel Fehler aus :

Jan 8 15:15:43 xx kernel: BUG: unable to handle kernel NULL pointer dereference at 00000008
Jan 8 15:15:43 xx kernel: IP: __radix_tree_lookup+0xe/0xa0
Jan 8 15:15:43 xx kernel: *pdpt = 0000000019977027 *pde = 0000000000000000 
Jan 8 15:15:43 xx kernel: Oops: 0000 [#1] SMP
Jan 8 15:15:43 xx kernel: Modules linked in: nfsv3 nfs_acl nfs lockd grace sunrpc fscache rmd160 ip_vti ip_tunnel af_key ah6 ah4 esp6 esp4 xfrm4_mode_beet xfrm4_tunnel tunnel4 xfrm4_mode_tunnel xfrm4_mode_transport xfrm6_mode_transport xfrm6_mode_ro xfrm6_mode_beet xfrm6
_mode_tunnel ipcomp ipcomp6 xfrm6_tunnel tunnel6 xfrm_ipcomp chacha20poly1305 cmac camellia_generic cast6_generic cast5_generic cast_common deflate ccm serpent_sse2_i586 serpent_generic glue_helper ablk_helper blowfish_generic cls_u32 blowfish_common twofish_generic sch_h
tb twofish_i586 twofish_common xcbc sha512_generic des_generic geode_aes xt_owner xt_multiport ip6table_filter ip6_tables xenfs xen_privcmd coretemp xen_netfront nf_conntrack_pptp nf_conntrack_proto_gre nf_conntrack libcrc32c crc32c_intel xen_blkfront
Jan 8 15:15:43 xx kernel: CPU: 0 PID: 1740 Comm: java Not tainted 4.14.11-200.fc26.i686+PAE #1
Jan 8 15:15:43 xx kernel: task: d750c500 task.stack: d7f96000
Jan 8 15:15:43 xx kernel: EIP: __radix_tree_lookup+0xe/0xa0
Jan 8 15:15:43 xx kernel: EFLAGS: 00010282 CPU: 0
Jan 8 15:15:43 xx kernel: EAX: 00000004 EBX: 0de6d000 ECX: 00000000 EDX: 00000000
Jan 8 15:15:43 xx kernel: ESI: 00000000 EDI: 00000004 EBP: d7f97da8 ESP: d7f97d98
Jan 8 15:15:43 xx kernel: DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0069
Jan 8 15:15:43 xx kernel: CR0: 80050033 CR2: 00000008 CR3: 01ee4000 CR4: 00002660
Jan 8 15:15:43 xx kernel: Call Trace:
Jan 8 15:15:43 xx kernel: radix_tree_lookup_slot+0x1d/0x40
Jan 8 15:15:43 xx kernel: find_get_entry+0x20/0x160
Jan 8 15:15:43 xx kernel: pagecache_get_page+0x24/0x290
Jan 8 15:15:43 xx kernel: lookup_swap_cache+0x3a/0x100
Jan 8 15:15:43 xx kernel: swap_readahead_detect+0x55/0x280
Jan 8 15:15:43 xx kernel: ? xen_set_pte_at+0x81/0x140
Jan 8 15:15:43 xx kernel: do_swap_page+0x22a/0x990
Jan 8 15:15:43 xx kernel: ? wp_page_copy+0x361/0x6f0
Jan 8 15:15:43 xx kernel: ? kmap_atomic_prot+0x3e/0x130
Jan 8 15:15:43 xx kernel: handle_mm_fault+0x498/0xc90
Jan 8 15:15:43 xx kernel: ? xen_timer_interrupt+0x17/0x30
Jan 8 15:15:43 xx kernel: __do_page_fault+0x202/0x4d0
Jan 8 15:15:43 xx kernel: ? __do_page_fault+0x4d0/0x4d0
Jan 8 15:15:43 xx kernel: do_page_fault+0x27/0xd0
Jan 8 15:15:43 xx kernel: ? __do_page_fault+0x4d0/0x4d0
Jan 8 15:15:43 xx kernel: common_exception+0x6f/0x76
Jan 8 15:15:43 xx kernel: EIP: 0x1f51b404
Jan 8 15:15:43 xx kernel: EFLAGS: 00010202 CPU: 0
Jan 8 15:15:43 xx kernel: EAX: 00000000 EBX: 0de6df60 ECX: 00000000 EDX: 40000000
Jan 8 15:15:43 xx kernel: ESI: 00000001 EDI: 40000000 EBP: 0f1f40b8 ESP: 0f1f409c
Jan 8 15:15:43 xx kernel: DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b
Jan 8 15:15:43 xx kernel: Code: b6 00 00 00 00 0f 0b 8d b6 00 00 00 00 b8 ef ff ff ff eb a4 e8 34 73 8b ff 8d 74 26 00 55 89 e5 57 56 53 89 c7 83 ec 04 89 4d f0 <8b> 5f 04 89 d8 83 e0 03 83 f8 01 75 6d 89 d8 83 e0 fe 0f b6 08
Jan 8 15:15:43 xx kernel: EIP: __radix_tree_lookup+0xe/0xa0 SS:ESP: 0069:d7f97d98
Jan 8 15:15:43 xx kernel: CR2: 0000000000000008
Jan 8 15:15:43 xx kernel: ---[ end trace 91253bf32b64ee98 ]---

Wie man sieht ist hier ein Java Prozess der gestorben ist. Das Problem dabei ist allerdings, daß die Prozesse gar nicht sterben, sondern einfach nicht mehr reagieren. Das ist besonders blöd, weil so Prozessüberwachungstools, die Prozesse nicht einfach neu starten können.

Im Fall oben war es ein Tomcat Webserver der hängen blieb und damit keine Webseiten mehr auslieferte.

Verschärfung

Problematisch an der Sache ist, daß auch kerneleigene Prozesse betroffen sind z..b der „swapper/0“ crasht mal einfach beim Hochfahren des Rechners weg. Ob sich das negativ auswirkt oder die Server einfach nicht mehr swappen, weiß man noch nicht.

Abhilfe ?

Da habt Ihr leider Pech. Redhat ist dran, aber das kann dauern. Bis zu einer Lösung könnte Ihr hängende Prozesse nur neustarten.

 

Linux – Fedora reagiert auf Meltdown und Spectre

Fedora stellt für die beiden Angriffsvectoren der neuesten Sicherheitslücken Meltdown & Spectre Kernelpatche für Fedora 26 & 27 zur Verfügung. Die Updates werden bereits über die Stablerepos verteilt. Ein Reboot des Computers ist zwingend nötig um auf den neuen Kernel umzustellen.

Leistungseinbußen inklusive

Intel rechnet damit, daß die Gegenmaßnahmen ca. 2 % CPU Leistung schlucken werden. Gestern wurde in den Veröffentlichungen noch mit Zahlen von 5 – 30% kolportiert.  Mal sehen wie sich die AMD CPUs damit schlagen, oder ob das nur im Intel-Codesegment angesiedelt wird.

Früher gab es ja mal Kernel für Intel und AMD getrennt, man könnte eine Neuauflage fordern 🙂