![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Internet Explorer Crash2003-10-26 Seit dem Neudesign unserer Webseiten kämpften wir mit einem sporadisch auftretenden Fehler, den wir uns nicht erklären konnten: Beim Aufruf der Seiten stürzt der Internet Explorer mit einer Fehlermeldung ab und wird beendet. Die Abstürze erfolgten nicht nachvollziehbar und nach keinem besonderen Schema, unabhängig von Betriebssystem- und Browserversion, unabhängig davon ob eine direkte Internetverbindung bestand, oder der Zugang über einen Proxy erfolgt. Halbwegs zuverlässig konnten wir nur dies sagen: Beim Aufruf einer lokal gespeicherten Kopie passiert nichts, und ein Windows 98 mit einem Internet Explorer 5 ohne Service Packs und ohne aktuelle Patches zeigt die Seiten am zuverlässigsten an, während die aktuellen Systeme mit aktuellem Patchlevel die größten Probleme mit den Seiten haben. Zudem betrifft dieser Fehler nur den Internet Explorer. Nach stundenlangen erfolglosen Debug-Sessions der Javascripte und der Seitenstrukturen sind wir vor einigen Tagen durch Zufall darauf gestoßen, dass dieses Problem bereits Anfang September Diskussionsthema auf der <Full-Disclosure> Liste war.
Die Ursache der ganzen Probleme war ausgerechnet das Gif-Bild, das als reines Layout-Hilfsmittel gar nicht in Erscheinung treten sollte: Ein 42 Byte großes, transparentes 1 Pixel Gif, das zum Aufspannen des äußeren Seitenrahmens mit dem Farbverlauf verwendet wird.
Dieses Bild ist defekt - alle Gif-Header sind in Ordnung, aber die vorletzten 4 Byte, die die eigentlichen LZW-komprimierten Bilddaten enthalten, sind ungültiger Datenmüll. Ein korrektes Gif sieht z.B. so aus:
Die 4 Byte Datenmüll sorgen für den Absturz des Internet Explorers. Genauer gesagt, für den Absturz desjenigen Teils der mshtml.dll, der für das Rendern von Gif-Bildern zuständig ist. Um die Sache noch abstruser zu machen, passiert dies jedoch nur im Zusammenhang mit dem Online-Download. Ist das Bild einmal im Browsercache angekommen oder wird es lokal abgerufen, treten keine Probleme auf.
Es wäre natürlich nett gewesen, uns auch noch eine Nachricht zu schicken. Wir möchten
aber nicht ausschließen, dass die entsprechende Nachricht in der täglichen Spamflut
untergegangen und ungelesen gelöscht worden ist, je nachdem wie geschickt der Betreff
gewählt wurde. :( Warum uns dieser Fehler nicht bereits bei der Entwicklung aufgefallen ist, hat hauptsächlich zwei Gründe: Zum einen zeigten die verwendeten Bildbetrachter nichts an - also genau das, was man von einem durchsichtigen, ein Pixel großen Bild auch erwarten würde. Auch der jetzt nachträglich getestete Import in einige Applikationen funktionierte ohne Widerspruch. Zum anderen hat der Rahmen, in dem das transparente Gif zum Einsatz kommt, eine Dicke von 6 Pixeln. Dies ist für die meisten Browser zu wenig, um das Standardbild für ein fehlendes oder defektes Bild anzuzeigen. Dadurch sahen auch die Webseiten genau so aus, wie wir es erwartet haben.
Nach unseren letzten Tests mit aktuellem Patchlevel ist dieser Fehler noch nicht behoben worden. Deshalb ist hier eine kleine Testseite, die eine einfache Tabelle mittels des defekten "galadbug.gif" aufspannt: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||