Seite 1 von 2
Bug's durch CD-Kratzer oder "falsch kopierte" Date
Verfasst: 09.10.2007 20:32
von Scarabol
Hi Leute,
1. Ist es möglich das Kratzer auf einer CD Bugs im Spiel auslösen?
Eigentlich doch nicht, oder?
2. Ist es möglich das ich in meinen Code schreibe PokeL(10) und später (2 Tage oder so) bei PeekL() kommt dann 9 raus?
(Is mir schon klar das das so nicht funktioniert, aber meine mit Poke und Peek eher das mans auf Festplatte schreibt...)
Falls ich mit meinen Vermutungen recht hab wie kann ich mich als Progger schützen?
Vielleicht immer ein PeekL() hinterherschicken aber selbst das könnte doch einen falschen Wert geben oder?
Gruß
Scarabol
Verfasst: 09.10.2007 20:55
von hardfalcon
1.) Theoretisch ja, praktisch aber eher unwahrscheinlich, viel wahrscheinlicher wäre, dass dein Spiel dann gar nicht startet, sondern irgendeine Fehlermeldung ausspuckt (oder Windows ne Fehlermeldung anzeigt, weil die EXE nich ausführbar ist). Du könntest die EXE signieren, dann weiss man im Falle einer beschädigten/manipulierten EXE sofort, was Sache ist.
2.) Ich habe nicht die leiseste Ahnung, was du da geschrieben hast...

Verfasst: 09.10.2007 21:13
von Scarabol
2. Ist das gleiche wie CD nur auf der HDD...
Gruß
Scarabol
Verfasst: 09.10.2007 21:21
von hardfalcon
Wenn das, was du bei 2. geschrieben hast, "von alleine" öfters vorkommt, bieten sich dir 2 Möglichkeiten:
1.) Du fängst ganz schnell an zu beten, und dankst Gott, dass dein PC überhaupt noch bootet
2.) Du legst dir ne neue Festplatte/neues Mainboard/neuen PC zu
Ansonsten: Machs doch mit nem MD5-Hash oder ner CRC32-Checksumme...
Verfasst: 09.10.2007 22:07
von milan1612
AFAIK hat gnozal da sogar mal ne lib dazu geschrieben...
Re: Bug's durch CD-Kratzer oder "falsch kopierte"
Verfasst: 10.10.2007 07:45
von ZeHa
Scarabol hat geschrieben:2. Ist es möglich das ich in meinen Code schreibe PokeL(10) und später (2 Tage oder so) bei PeekL() kommt dann 9 raus?
(Is mir schon klar das das so nicht funktioniert, aber meine mit Poke und Peek eher das mans auf Festplatte schreibt...)
Falls ich mit meinen Vermutungen recht hab wie kann ich mich als Progger schützen?
Vielleicht immer ein PeekL() hinterherschicken aber selbst das könnte doch einen falschen Wert geben oder?
Scarabol hat geschrieben:2. Ist das gleiche wie CD nur auf der HDD...
Also so wie ich das verstehe, willst Du mit diesem Beispiel fragen, ob es möglich ist, daß sich auf der Festplatte einfach so ein paar Bits ändern können? Oder wie? Rein theoretisch kann sowas auftreten wenn Du 'nen Fehler im Dateisystem hast, das kann z.B. passieren wenn der Rechner gerade was draufschreibt und es plötzlich 'nen Stromausfall gibt. Dann stimmt das, was eigentlich draufgeschrieben werden sollte, nicht ganz mit dem überein, was tatsächlich draufsteht - aber meist bezieht sich das dann auch nur auf die Datei, die gerade geschrieben wurde (hängt dann aber wohl auch wiederum vom Dateisystem ab).
Oder kannst Du Deine Frage nochmal ein wenig genauer stellen?
Verfasst: 10.10.2007 13:37
von Zaphod
Tatsächlich könnte es passieren, dass sich einfach mal ein Wert auf der Festplatte ändert. Magnetfelder können umkippen, Astronomische Hintergrundstrahlung könnte ausgerechnet ein einzelnes Bit treffen usw. Das fällt dann aber auf, weil dann auch die Checksumme deines Dateisystems nicht mehr stimmt. Das könnte also nur passieren, wenn zwei Bits umkippen im selben Bereich. Das ist aber *extrem* unwahrscheinlich, wenn du solch ein verhalten bemerkst, dann ist eher der Datenträger kaputt.
Das kann bei einem schlecht geschriebenen Spiel auch zu Bugs führen. Ist wegen eines beschädigten Datenträger zb eine Textur nicht Ladbar und wird diese Tatsache vom Programm ignoriert kann das zu komischen Verhalten führen. Die Frage ist aber, ob das dann nicht sowieso als Bug im Programm zu betrachten ist.
Verfasst: 10.10.2007 19:13
von Scarabol
@Hardfalcon
Nene ich red nicht von einem realen Problem war nur hypothetisch, weil ich mich gewundert hab das einige Spiele es total ignorieren wenn das Laden von Daten eben durch solche Fehler fehlschlägt und wie die anderen schon geschrieben haben sollte es doch kein großer Umstand sein dies herauszufinden...
@Milan
Was für eine Lib? Die Speicherfehler erzeugt?
@Zaphod
Du hast es erfasst...
Na dann werd ich meinen PC wohl mal gegen Strahlung schützen
Aber mal im Ernst ich bräuchte doch nur mit der Checksumme prüfen ob noch alles ok ist oder?
Aber wie kommt es dann das folgendes passiert?
1. Ich hab das Spiel fehlerfrei installiert
2. Ich kann das Spiel einwandfrei spielen
3. An einer bestimmten Stelle stürzt das Spiel ab, unabhängig davon wie ich mich als Spielfigur verhalte, wenn ich diesen Punkt erreiche Schmiert es ab...
4. Daraus folgere ich mal das irgendwas auf der CD von der ja installiert wurde nicht stimmt (Kratzer), aber wieso merkt das Spiel das nicht? Haben die Programmierer (eigentlich denke ich fähige Leute von einem großen Spielehersteller) Mist gebaut?
Gruß
Scarabol
Verfasst: 10.10.2007 20:19
von ZeHa
Scarabol hat geschrieben:@Hardfalcon
Nene ich red nicht von einem realen Problem war nur hypothetisch, weil ich mich gewundert hab das einige Spiele es total ignorieren wenn das Laden von Daten eben durch solche Fehler fehlschlägt und wie die anderen schon geschrieben haben sollte es doch kein großer Umstand sein dies herauszufinden...
Wenn Du ein Spiel programmierst, überprüfst
Du dann bei jedem Laden einer Textur oder eines Sounds die Daten? Wie bitte soll das gehen? Checksummen sind die einzige Lösung, und sowas ist eigentlich nur sinnvoll bei Dingen, die mit Cheating oder sowas zu tun haben (also die Levelmatrix z.B.), aber selbst da machen es viele nicht, wozu auch.
Verfasst: 10.10.2007 22:06
von Scarabol
Ähm ja mach ich,
wusste aber jetzt nicht das das sooo ungewöhnlich ist, das gehörte bei mir bis jetzt immer zu dem Teil im Projekt "Program DAU sicher machen".
Gruß
Scarabol