Ich habe ein Textverarbeitungsprogramm veröffentlicht, das die Festplatte nach jedem 1024. Speichern formatiert

Anfängern von Story-Ingenieuren zu erzählen, wie Sie es einmal ernsthaft vermasselt haben, ist ein guter Weg, um mit dem Betrugssyndrom umzugehen .

Es war wahrscheinlich 1984-1985. Dann war ich ein 25-jähriger angehender Programmierer mit fünf Jahren Erfahrung. Ich und ein anderer Programmierer haben eine Reihe von Anwendungen geschrieben und unterstützt, die dem heutigen Office ähneln: Tabellenkalkulationen, Textverarbeitung, Datenbank, Plotter usw. Wir haben dieses ganze System für drei bis vier vertikale Märkte eingerichtet [ hochspezialisierte Geschäftskunden / ca. perev. ].

Ich habe den größten Teil des Textverarbeitungsprogramms selbst geschrieben. Ich habe in Fort geschriebenund für verschiedene Kombinationen von Betriebssystemen und Prozessoren. Junge Leute sind nicht vertraut, aber damals kamen alle paar Monate neue Mikrocomputer mit einem eigenen speziellen Betriebssystem und einer von mehreren Prozessoroptionen heraus.

Fort nutzte den Austausch von Blockdaten mit der Festplatte. Jeder Block hatte eine Länge von 1 KB, und um etwas mehr als 1 KB zu sparen, musste mit dem Hauptblock der Datei gearbeitet werden, in dem die Offsets aller Blöcke mit Daten gespeichert waren - tatsächlich waren es einige Listen besetzter und nicht besetzter Blöcke.

Um diesen Masterblock zu initialisieren, musste er mit Nullen gefüllt werden. Nun, es fing an. Kurz gesagt, ich habe die Anwendung so geändert, dass sie doppelt so große Dateien wie zuvor unterstützt - und statt 256 Elemente im Masterblock wurden 1024 angezeigt.

Jeder Eintrag nahm - Aufmerksamkeit - ein Wort aus 16 Bit in Anspruch. Wenn also noch 512 Wörter in meinen 1-KB-Masterblock passen, waren für 1024 Wörter bereits zwei Blöcke erforderlich.

Daher habe ich die Anzahl der mit Nullen gefüllten Blöcke geändert, aber die Puffergröße nicht geändert. Wenn Sie mit ungeschütztem Speicher arbeiten und 2048 Nullen in den Bereich von 1024 Bytes schreiben, überschreiben die verbleibenden Bytes jeden zufälligen Müll, den sie im Speicher finden.

In meinem Fall stellte sich heraus, dass jeder zufällige Müll der Hauptblock der Betriebssystemfestplatte war. Ja ... Und als ich eine neue Datei initialisierte, die alle 1024. beim Schreiben einer Ein-Block-Datei auftrat, habe ich den Master-Block der Festplatte überschrieben, wodurch alle Dateien von dieser gelöscht wurden.

Und wir haben natürlich diese Version veröffentlicht, die 8-9 Wochen lang funktioniert hat. Und Sie können sich vorstellen, wie viele Anrufe von Kunden wir erhalten mussten. Am Ende rieten wir allen, jeden Tag Backups zu erstellen (was übrigens mit Videobändern durchgeführt wurde).

Ich habe mich viele Wochen lang telefonisch entschuldigt, während ich mein Programm immer wieder im Debugger ausgeführt habe. Und es ist mir nicht gelungen. Nichts.

Und dann rief eine Frau an und beschrieb sie in farbenfrohen Begriffen - und sie arbeitete im Güterverkehr, also verwende ich jetzt aktiv ihre Beispiele aus dem Bereich der Obszönität -, dass sie eine Sicherungskopie erstellte, ein Textverarbeitungsprogramm startete und er sofort ihre Festplatte säuberte. Sie hat das Backup erneut heruntergeladen und der Prozessor hat ihre Festplatte sofort wieder gelöscht. Sie war wütend.

Und stellen Sie sich vor, ich habe zwei Stunden gebraucht, um zu verstehen, wie viel Glück ich hatte. Ich erzählte diese Geschichte meinem Kollegen beim Abendessen, und dann dämmerte es mir - hör auf. Halt. Sofort? Jedes Mal?

Ich rief sie an und versprach alle irdischen Segnungen, wenn sie nur diese Kassette packen und uns schicken würde. Ich habe ihr versprochen, die Versandkosten zu bezahlen und die monatlichen Zahlungen für unsere Dienstleistungen zu stornieren (mein Chef zögerte keine Sekunde: "Ja, verdammt, wir werden ihre Zahlungen stornieren").

Und schließlich konnte ich diesen Fehler reproduzieren. Und sie hat nicht geschummelt. Das von ihr gespeicherte Backup stellte sich an einem kritischen Punkt heraus: 1023 Backups zum Zeitpunkt der Erstellung. Laden Sie das Backup herunter, speichern Sie die Datei, und das Laufwerk wird garantiert gereinigt.

Vielleicht übertreibe ich, aber meiner Meinung nach fand ich das Problem am selben Morgen, als wir den Film bekamen. Es war so leicht im Debugger zu finden.

Ich sah mir einen 2-KB-Block an, der geschrieben werden sollte, und der letzte 1-KB-Block war mit einer Art Müll gefüllt. Es kam mir seltsam vor und ich begann zu verstehen. Und natürlich war es kein Müll - es waren 1024 Bytes des Festplatten-Masterblocks, die das Betriebssystem neben meinem Dateimasterblock gespeichert hat.

Ich habe ein Backup "vor" dem Kernel erhalten - ich hatte keinen Core-Dump, aber es gab mir einen garantierten Weg, um zu diesem Defekt zu gelangen. Wenn ich kein Glück gehabt hätte, hätte ich ihn nicht gefunden. Ich hätte einfach nicht gedacht, dass ich nicht in meinem Gedächtnis, sondern im System schreibe.

Also ja - Ihr "Master" -Freak hat ein Textverarbeitungsprogramm veröffentlicht, das innerhalb von acht bis neun Wochen die Festplatte des Clients nach jedem 1024. Speichern formatiert. Weil ich ein Handwerker bin.

Sie können viel Moral in dieser Geschichte finden, aber hier sind zwei Hauptmotive für jeden Junior:

  1. Schreiben Sie niemals numerische Konstanten außer 0, 1 und -1 in Ihren Code.
  2. Sei nicht so streng mit dir. Alle Ihre weisen Senioren haben ähnliche Geschichten, und einige von ihnen haben viele.

All Articles