Autor Thema: Wie kann man die Zuverlässigkeit von Software und Computern steigern?  (Gelesen 12927 mal)

Dimension

  • Beiträge: 155
    • Profil anzeigen
Gespeichert
ich fasse zusammen, was ich da rauslese (bei Fehlern bitte korrigieren):
- du programmierst den Kernel extrem defensiv, auf Kosten der Performance

Ich versuche den Kernel so übersichtlich zu machen, wie es geht. Wenn ein Codestück zu komplex wird, schmeisse ich es weg, verzichte auf ein unwesentliches Merkmal und schreibe es einfacher.

Die Sicherheit soll hardwareseitig, durch das Design und durch Runtime-Checks gewährleistet werden. Ich will dass User im Internet surfen können ohne ein schlechtes Gewissen zu bekommen und beliebige Software herunterladen und ausführen können ohne dass diese unbeabsichtigte Dinge tun oder Dienste im Hintergrund starten.

Ich will außerdem, dass ein Programm beliebig angehalten und sein Zustand gespeichert werden kann, um es mit ins Büro zu nehmen oder einem Bekannten zu schicken. Eine Präsentation im Internet bedeutet, ich kann die Show anhalten und das Programm selbst ausprobieren.

Ich will mein Betriebssystem und alle darauf laufenden Programme mit nur einem Klick im Editor bearbeiten können, etwa um eine Suchmaske zu ändern oder ein Programm zu scripten.

Einen mehrstündigen Kompiliervorgang oder einen aufwändigen Testlauf will ich auf einem schnellen Server parallelisiert ausführen, während ich ein Forum im Internet auch gerne mal offline lesen möchte.

Wenn ich Windows oder Linux benutze sehe ich immer nur was alles nicht geht.

Gruß

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
Hallo,

also mal rein gefühlt empfinde ich deinen Ansatz als Lösung für das falsche Problem.

Wenn ein Codestück zu komplex wird, schmeisse ich es weg, verzichte auf ein unwesentliches Merkmal und schreibe es einfacher.
Wenn du genug unwesentliche Merkmale weglässt, ist dein System nutzlos.

Die Sicherheit soll hardwareseitig, durch das Design und durch Runtime-Checks gewährleistet werden.
Das heißt, du setzt moderne Hardware voraus (IOMMU, 64-Bit-Modus), verzichtest damit auf Segmentierung und arbeitest ausschließlich mit "managed Code" in einem Hypervisor.

Ich will dass User im Internet surfen können ohne ein schlechtes Gewissen zu bekommen und beliebige Software herunterladen und ausführen können ohne dass diese unbeabsichtigte Dinge tun oder Dienste im Hintergrund starten.
Das wiederum hat genau nichts mit dem Kernel zu tun. Weder Windows noch Linux erlauben einem Benutzer, Dienste im Hintergrund zu starten oder unbeabsichtigte, das System beeinflussende, Dinge zu tun.

Die Angriffe, die einstmals das Betriebssystem geknackt haben, sind nutzlos geworden. Das heißt nicht, dass es keine Rootkits gibt, aber auf PCs sind sie für den Normalnutzer kein Thema. Es ist ziemlich egal, ob du von einem Benutzer den Rechner oder das Profil knackst - wenn du die Daten hast, hast du gewonnen. Anwendungen leben heutzutage im Browser und den zu sichern ist schwierig, weil es Unmengen an Code und Standards sind, die du unterstützen musst. Dazu kommt, dass sich die Standards widersprechen (WSDL und SOAP anyone?) oder hinreichend mächtig sind (JIT-compiled Javascript).

"Das Internet" hat nicht mehr viel mit deinem Betriebssystemskernel zu tun und dessen Sicherheit ist nebensächlich. Googles ChromeOS zeigt den Weg. Wenn es nach den derzeit regierenden Firmen (Microsoft, Google, Facebook) geht, sind Betriebssysteme eine sterbende Ware.

Ich will außerdem, dass ein Programm beliebig angehalten und sein Zustand gespeichert werden kann, um es mit ins Büro zu nehmen oder einem Bekannten zu schicken. Eine Präsentation im Internet bedeutet, ich kann die Show anhalten und das Programm selbst ausprobieren.
Wie bringst du das dem anderen System im Internet bei, wenn es Session-IDs basierend auf IP-Adressen benutzt? Es ist ja schön und gut, wenn dein Webbrowser das alles unterstützt, aber die anderen müssen genauso denken.

Man hat auf dem letzten Chaos-Congress gesehen, wie sehr Dienste z.B. heutzutage auf Geolocation angewiesen sind und was passiert, wenn es schiefgeht. Ich empfehle den NOC-Bericht. Extrapoliere das von "Geolocation-Daten" auf die Summe der Informationen, die so ein Browser rausgibt und du siehst das Problem vielleicht. Facebook sammelt eine Menge Informationen über die Nutzer durch die Like-Buttons und korreliert die mit den Profilen, auch wenn derjenige nicht angemeldet ist. Außerdem werden Profile über Nutzer ohne Account angelegt und ausgewertet. Die Leute haben rausgefunden, dass ein User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20100101 Firefox/10.0.12 Iceweasel/10.0.12 zwar nah dran, aber doch nicht so ganz eindeutig ist, wohl aber das Tupel aus User-Agent, Betriebssystem, Geolocation-Daten, Provider, IP-Paketroute, Verbindungsqualität (Ping+Bandbreite), Sprache des Nutzers, Bildschirmauflösung und vielem mehr.

Ich will mein Betriebssystem und alle darauf laufenden Programme mit nur einem Klick im Editor bearbeiten können, etwa um eine Suchmaske zu ändern oder ein Programm zu scripten.
Also möchtest du alle Anwendungen für dein Betriebssystem im Source-Code in einer Scriptsprache schreiben und das Betriebssystem selbst, bis auf die Trusted Code Base in dieser Sprache schreiben? Bringt das was?

Willst du wirklich den Source-Code von Firefox, Chrome, Internet Explorer einsehen und zur Laufzeit ändern können? Glaubst du, es gibt Programmierer auf dieser Welt, der in der Lage ist, sich auf die Schnelle in solch ein Mammutprojekt einzulesen und seiteneffektfreie Änderungen vorzunehmen? Der Sinn liegt ja nicht darin, dass jemand auf seiner Festplatte drei Zeilen Code ändert, sondern dass jeder sein persönliches System anpassen können soll. Das ist schlichtweg nicht möglich.

Übrigens hat sich auch gezeigt, dass Open-Source-Code teilweise schlechter auditiert ist als proprietäres Zeug - was daran liegt, dass es offen ist und mit "irgendjemand wird das schon gemacht haben" betitelt ist, was insbesondere bei kleinen (weil nicht genug Leute) und sehr großen Projekten (weil Codebasis zu groß) nicht passiert.

Einen mehrstündigen Kompiliervorgang oder einen aufwändigen Testlauf will ich auf einem schnellen Server parallelisiert ausführen, während ich ein Forum im Internet auch gerne mal offline lesen möchte.
Ich dachte, du möchtest auf Scriptsprachen umsteigen? Aber parallel kompilieren auf einem Drittserver gibt es heutzutage schon, z.B. mit distcc. Ein Forum offline lesen geht heutzutage auch, solange es sich nicht gerade um das neuste, möglichst stark im Browser implementierte Forum handelt. wget ist dein Freund.

Wenn ich Windows oder Linux benutze sehe ich immer nur was alles nicht geht.
Repariere lieber Linux.

Du hast eine nette Vision. Ich hätte auch gern so eine Welt, wie du sie beschreibst.

Aber ich sehe, dass die Welt gerade in eine völlig andere Richtung marschiert, auf allen Fronten gleichzeitig. Und ich sehe, dass deine Ansätze dieser Vision nicht helfen. :-) Wie oben geschrieben, "das Internet" lebt inzwischen im Browser, nicht im Betriebssystem. Und ein sauberer Mikrokernel mit maximaler Sicherheit hilft nicht dagegen, dass 3D-Grafiktreiber (notwendig, weil 3D- und Videobeschleunigung im Browser) aufgrund der komplexen Hardware so unglaublich schwierig zu programmieren und zu sichern sind. Bugs kannst du nicht vermeiden - und Bugs in Hardwaretreibern können zu DMA führen, und damit zu Rootkits.

Aus dem Browser.

Welcome to the future,
Svenska

PS: Ich wüsste gerne, was ihr so denkt und/oder ob ich mit meiner Meinung ganz alleine dastehe und Dimension hier ganz unnötig Contra gebe und ihr das ganz anders seht.

Dimension

  • Beiträge: 155
    • Profil anzeigen
Gespeichert
Weder Windows noch Linux erlauben einem Benutzer, Dienste im Hintergrund zu starten oder unbeabsichtigte, das System beeinflussende, Dinge zu tun.
Wirklich? Also ich habe da schon ganz andere Geschichten gehört.

Die Sicherheit soll hardwareseitig, durch das Design und durch Runtime-Checks gewährleistet werden.
Das heißt, du setzt moderne Hardware voraus (IOMMU, 64-Bit-Modus), verzichtest damit auf Segmentierung und arbeitest ausschließlich mit "managed Code" in einem Hypervisor.
Siehe aktualisierte Posts vom 18. März 2013, 21:09 und 20. März 2013, 23:22.

Willst du wirklich den Source-Code von Firefox, Chrome, Internet Explorer einsehen und zur Laufzeit ändern können? Glaubst du, es gibt Programmierer auf dieser Welt, der in der Lage ist, sich auf die Schnelle in solch ein Mammutprojekt einzulesen und seiteneffektfreie Änderungen vorzunehmen?
Nehmen wir einmal an, du hast ein Programm und willst diesem eine Funktion hinzufügen, die dir das Arbeiten erleichtert. Wenn dieses Programm überhaupt Scripting bereitstellt, wie willst du damit die Benutzeroberfläche erweitern und vorhandenen Code des Programms anpassen? Geht das auch bei Anwendungen, die auf dem Server laufen? Bei meinem System reicht ein Klick mit gehaltener F-Taste auf das Fenster und das zu bearbeitende Formular und alle verknüpften Ereignisse werden im Editor geöffnet. Da die Symbole im Editor sofort aufgelöst werden, sind die Effekte direkt sichtbar.
« Letzte Änderung: 22. March 2013, 09:14 von Dimension »

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
Weder Windows noch Linux erlauben einem Benutzer, Dienste im Hintergrund zu starten oder unbeabsichtigte, das System beeinflussende, Dinge zu tun.
Wirklich? Also ich habe da schon ganz andere Geschichten gehört.
Ja. Die Dinge nennt man Bugs/Sicherheitslücken. Kannst du nicht verhindern.

Was du nicht verhindern kannst sind Dienste mit den Berechtigungen des angemeldeten Nutzers.

Nehmen wir einmal an, du hast ein Programm und willst diesem eine Funktion hinzufügen, die dir das Arbeiten erleichtert. Wenn dieses Programm überhaupt Scripting bereitstellt, wie willst du damit die Benutzeroberfläche erweitern und vorhandenen Code des Programms anpassen?
Gib mal Beispiele, die man heute nicht erreichen kann.

MS-Office konnte früher Makros ins Menü und in die Symbolleiste einbinden und Firefox bindet mit Greasemonkey Scripte in die Oberfläche ein.

Geht das auch bei Anwendungen, die auf dem Server laufen?
Du kannst also jederzeit Anwendungen, die auf einem anderen Rechner laufen, verändern? Respektabel. Mir fallen gerade ein paar schöne Möglichkeiten ein, wie man den Benutzer mit einem bösen Programm, welches nur das Homeverzeichnis verändert, verunsichern kann... besonders, wenn dieser Benutzer kein Programmierer ist. Zum Beispiel "Datei-Speichern" mit einer Funktion zu ersetzen, die "Datei-Upload" und dann "Datei-Speichern" ausführt.

Gruß,
Svenska

Dimension

  • Beiträge: 155
    • Profil anzeigen
Gespeichert
Gib mal Beispiele, die man heute nicht erreichen kann.

Wie wärs damit:

Ein User postet auf lowlevel und hat ein Problem mit einem Stück Code. Er postet seine Entwicklungsumgebung und jeder kann es im Browser testen. Die funktionierende Lösung holt der User sich dann zurück auf seinen Rechner.

Ein Developer-Tutorial oder ein Referenzhandbuch im Internet ist mit Beispielen. Die Beispiele lassen sich im Browser ausführen.

Es wurde ein Update für den Browser veröffentlicht. Ich habe gerade einen 80GB-Download bei 50%. Ohne das Update browse ich gefährlich. Der Browser macht einen Snapshot seines Speichers und macht das Update unter Berücksichtigung der aktuell ausgeführten Programmteile.

Ich arbeite zuhause an einem Projekt und will im Geschäft daran weiter arbeiten. Ich transferiere meine komplette Arbeitsumgebung auf ein Tablet und gehe unterwegs noch mal alle Punkte durch. Im Geschäft angekommen öffne ich das Projekt an meinem Arbeitsplatz und setze meine Arbeit fort.

Nur so als Inspiration.

Gruß

Dimension

  • Beiträge: 155
    • Profil anzeigen
Gespeichert
Ich benutze ein Programm und entdecke einen schwer zu reproduzierenden Bug. Ich sende ein Speicherabbild des Programms und eine Aufzeichnung der letzten 10 sek. an den Entwickler. Eventuell schaue ich mir den Code an und schreibe mir selbst einen Fix. Diesen kann ich direkt an den Entwickler weiterleiten und jedem, der ebenfalls einen Fix schreiben will über einen Kommentar im Code zum Download anbieten. Dieser Fix hat natürlich nur eingeschränkte Auswirkung auf die gesamte Anwendung. Dass dem so ist wird vom Editor per Datenflussanalyse geprüft.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
Ein User postet auf lowlevel und hat ein Problem mit einem Stück Code. Er postet seine Entwicklungsumgebung und jeder kann es im Browser testen. Die funktionierende Lösung holt der User sich dann zurück auf seinen Rechner.

Geht das denn auch, wenn auf dem lowlevel-Server Linux läuft?
Dieser Text wird unter jedem Beitrag angezeigt.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
Hallo,

Ein User postet auf lowlevel und hat ein Problem mit einem Stück Code. Er postet seine Entwicklungsumgebung und jeder kann es im Browser testen. Die funktionierende Lösung holt der User sich dann zurück auf seinen Rechner.
Contraproduktiv. Wir sind hier zum Lernen, Spielen und Basteln. :-P Die Tutorials sind sehr gut und wer mit seinem eigenen Code nicht umgehen kann, muss noch mehr lernen. Ansonsten ist eine Entwicklungsumgebung (aus welchen Gründen) ziemlich stark an den PC gebunden, auf dem sie läuft; da hilft deine Lösung nix, sondern dazu müsste man die Entwicklungsumgebung fixen, was aus mir nicht bekannten Gründen (Manpower? Desinteresse?) nicht geschieht.

Ein Developer-Tutorial oder ein Referenzhandbuch im Internet ist mit Beispielen. Die Beispiele lassen sich im Browser ausführen.
Es gibt einen Javascript-basierten x86-Emulator von Fabrice Bellard. Ansonsten sollte man seinen Code selbst schreiben können. Du predigst Copypaste, aber (a) lernt man dann nix (b) produziert man braunes, weiches Zeug und (c) steht man irgendwann sowieso an der Wand, an der das Tutorial mit den Beispielen aufhört.

Es wurde ein Update für den Browser veröffentlicht. Ich habe gerade einen 80GB-Download bei 50%. Ohne das Update browse ich gefährlich. Der Browser macht einen Snapshot seines Speichers und macht das Update unter Berücksichtigung der aktuell ausgeführten Programmteile.
Und wer programmiert den Updater in seiner ganzen Komplexität fehlerfrei? Wie händelt der Updater verschiedene Browserversionen? In die Zukunft schauen kann der Programmierer nicht, also muss der Updater im Update mit drin sein und alle(!) vergangenen Versionen kennen. Wer testet alle Kombinationsmöglichkeiten?

Während des Updates wird nicht weitergeladen, bis der Server mit einem Timeout abbricht - alternativ zerhaut dir die 24h-DSL-Zwangstrennung zwischendurch die Verbindung. Danach rufst du mit "wget -c" den Download erneut auf und erfreust dich daran, dass dein Browser die Dinge tut, für die er da ist (Browsen) und der Downloader die Dinge tut, für die er da ist (Downloaden).

Ich arbeite zuhause an einem Projekt und will im Geschäft daran weiter arbeiten. Ich transferiere meine komplette Arbeitsumgebung auf ein Tablet und gehe unterwegs noch mal alle Punkte durch.
Denjenigen, der vernünftig produktiv auf einem Tablet arbeiten kann, möchte ich mal sehen... besonders mit Software, die für den PC gemacht ist. Und nein, eine Software, die du "mal eben schnell im Betrieb" zwischen zwei verschiedenen Architekturen hin- und herschieben kannst, ist in den nächsten Jahren nicht realistisch. Ohne Tastatur macht Produktivität auf dem Tablet eh keinen Spaß. Dokumente anschauen, Todo-Listen überarbeiten geht aber auch so schon ganz gut, Präsentationen bauen eher nicht - aber der Trend geht in die Richtung.

Im Geschäft angekommen öffne ich das Projekt an meinem Arbeitsplatz und setze meine Arbeit fort.
Wie wäre es mit "seamless sessions", wie sie VNC oder RDP ermöglichen? Wenn du deine Arbeitsumgebung durchs Internet verschicken möchtest, kannst du auch gleich übers Internet damit arbeiten. Für alles andere nimmt man eine richtige Cloud, z.B. Google Docs und ähnliche Dinge und wenn du hardcore antigoogle bist, baust du dir das auf deinem eigenen Server auf...

Ich benutze ein Programm und entdecke einen schwer zu reproduzierenden Bug. Ich sende ein Speicherabbild des Programms und eine Aufzeichnung der letzten 10 sek. an den Entwickler. Eventuell schaue ich mir den Code an und schreibe mir selbst einen Fix. Diesen kann ich direkt an den Entwickler weiterleiten und jedem, der ebenfalls einen Fix schreiben will über einen Kommentar im Code zum Download anbieten.
Das ist ne gute Idee. Wo ist aber die zentrale Instanz, die solche Codeschnipsel verbreitet? An wen wendet sich der Random System Administrator, um seine Anwendung von einem Unbekannten fixen zu lassen? Viele Quick Fixes sind nicht korrekt.

Dieser Fix hat natürlich nur eingeschränkte Auswirkung auf die gesamte Anwendung. Dass dem so ist wird vom Editor per Datenflussanalyse geprüft.
Von so Dingen wie "Turing-Vollständigkeit" und "Halteproblem" hast du gehört und weißt, dass damit jede Datenflussanalyse deutliche Grenzen hat?

Geht das denn auch, wenn auf dem lowlevel-Server Linux läuft?
Wenn man Dimensions Betriebssystem benutzt, geht das. Sonst natürlich nicht (es sei denn, der Hypervisor wird auf Linux portiert).

Fakt ist, deine Beispiele sind eher Visionen als Ideen und sie zeigen in eine Richtung, die ich definitiv nicht teilen kann. Davon abgesehen sind sie nicht umsetzbar, weil:
- du extrem viel Aufwand für total nebensächliche Funktionalität treiben willst (siehe Browserupdate)
- du so dermaßen sicher, sauber und defensiv programmieren musst, dass entweder keine Performance oder keine Funktionalität übrig bleibt (wenn du alle Anwendungen durchbeweisbar machen musst, um eine 100%ig korrekte statische Analyse machen zu können, sind deine Anwendungen nunmal nicht wirklich komplex)
- der organisatorische Aufwand (v.a. Infrastruktur) so hoch ist, dass davon nur Firmen oder Bastler mit extrem viel Zeit profitieren könnten, aber nicht der Normalsterbliche - es sei denn, du möchtest sowas wie Google Docs mit Sessions und semi-lokal machen

Gruß,
Svenska

Dimension

  • Beiträge: 155
    • Profil anzeigen
Gespeichert
Dieser Fix hat natürlich nur eingeschränkte Auswirkung auf die gesamte Anwendung. Dass dem so ist wird vom Editor per Datenflussanalyse geprüft.
Von so Dingen wie "Turing-Vollständigkeit" und "Halteproblem" hast du gehört und weißt, dass damit jede Datenflussanalyse deutliche Grenzen hat?

Das bedeutet nur, dass das Verhalten nicht für jeden Code vorhersagbar ist. Zumindest kann man aber mit Bestimmtheit sagen, ob der (Teil-)Code deterministisch ist oder nicht.

Und wer programmiert den Updater in seiner ganzen Komplexität fehlerfrei?

Das gesamte System ist in erster Linie dazu gedacht so eine Komplexität kontrollieren zu können. Anwendungs-Software wird meiner Meinung nach auch so immer komplexer werden, sei es um verschiedene Zielgruppen anzusprechen, individuellen Kundenanforderungen gerecht zu werden oder einfach nur ein Entwicklerteam von mehreren hundert Leuten zu koordinieren.

Die vorgstellten Szenarien lassen sich auch auf beliebige andere Anwendungsfälle übertragen.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
Hallo,

Dieser Fix hat natürlich nur eingeschränkte Auswirkung auf die gesamte Anwendung. Dass dem so ist wird vom Editor per Datenflussanalyse geprüft.
Von so Dingen wie "Turing-Vollständigkeit" und "Halteproblem" hast du gehört und weißt, dass damit jede Datenflussanalyse deutliche Grenzen hat?
Das bedeutet nur, dass das Verhalten nicht für jeden Code vorhersagbar ist.
Genau das wolltest du doch: Statisch (vom Editor?!) vorhersagen lassen, dass der Code keine ungewollten Seiteneffekte auf andere Teile der Anwendung hat. Das kannst du im allgemeinen Fall nicht vorhersagen, nur in eingeschränkten Spezialfällen. Also musst du dich in der Programmierung auf das beschränken, was statisch vorhersagbar ist.

Zumindest kann man aber mit Bestimmtheit sagen, ob der (Teil-)Code deterministisch ist oder nicht.
Das ist eher irrelevant. Wenn der Code deterministisch ungewollte Dinge tut, ist er halt deterministisch kaputt.

Und wer programmiert den Updater in seiner ganzen Komplexität fehlerfrei?
Das gesamte System ist in erster Linie dazu gedacht so eine Komplexität kontrollieren zu können.
Ich bevorzuge ja, unnötige Komplexität zu vermeiden, statt sie zu verwalten. Ein Updater, der im laufenden Programmcode rumpfuschen kann, ist für mich unnütze Komplexität (und macht Dinge wie Code lese-/schreibschützen oder das NX-Bit nutzlos).

Eine Anwendung problemlos von Rechner A nach Rechner B schieben zu können heißt auch, einen Virus problemlos von Rechner A nach Rechner B schieben zu können.
Eine Anwendung jederzeit verändern zu können, heißt auch, eine Anwendung jederzeit zu einem Virus umfunktionieren zu können. (Wie oben das Beispiel: "Speichern" tut jetzt "Upload zu <böse Firma> und Speichern".)
Eine Anwendung jederzeit mit Bugfixes von Dritten versorgen zu können heißt auch, unbekannten Code von Dritten jederzeit in die eigene Anwendung reinlassen zu können - zur Laufzeit.

Man kann z.B. sehr kleine Bugfixes in den Linux-Kernel splicen, während er läuft - aber aus gutem Grund keine vollständigen Kernelupdates durchführen. Und das auch nur für ganz bestimmte Kernel-Versionen von sehr wenigen Enterprise-Herstellern.

All diese Szenarien unterlaufen jede Sicherheitsarchitektur, die du haben kannst. Speziell, wenn du nicht von dir als Programmierer/Kenner des Systems ausgehst, sondern vom Standardnutzer, der schon die Windows-"Sie brauchen Adminrechte"-Dialoge einfach wegklickt.

Langsam wird es auch. Schon ein nativ compiliertes Libreoffice (oder Firefox) ist auf einem kleineren ARM langsam. Um einen Speicherdump ausführen zu können, darf das nur roher, interpretierter Bytecode sein, selbst ein JIT-Compiler kann nicht verwendet werden.

Gruß,
Svenska

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
Es wurde ein Update für den Browser veröffentlicht. Ich habe gerade einen 80GB-Download bei 50%. Ohne das Update browse ich gefährlich. Der Browser macht einen Snapshot seines Speichers und macht das Update unter Berücksichtigung der aktuell ausgeführten Programmteile.
Bist du dir bewusst, was du hier verlangst? Du gehst hier nämlich stillschweigend davon aus, dass der Speichersnapshot auch für die upgedatete Version der Software noch passt. Das tut nicht automatisch, sondern ist mit extrem viel Aufwand verbunden. Und zwar in jeder einzelnen Software, du kannst das nicht in der Laufzeitumgebung verstecken.

Das ist qualitativ ungefähr dasselbe Problem wie eins, mit dem ich einigermaßen vertraut bin: Live-Migration von VMs auf eine neuere qemu-Version. Glaub mir: Es macht keinen Spaß. (Die andere Richtung, also Downgrade, ist natürlich noch "interessanter"...) Quantitativ ist es einen ganzen Berg von Größenordnungen komplexer.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen