Ich habe eine Website, die plötzlich begann Internet Explorer zu crashen.Meine Website stürzt IE ab, kann nicht debuggen
Die Website lädt und startet JavaScript, aber irgendwo dort explodiert die Maschinerie. Ich bekomme nicht einmal einen Skriptfehler, es stürzt einfach ab. Ich habe versucht, jede einzelne Zeile von js mit dem integrierten Debugger manuell zu durchlaufen, aber dann tritt das Problem natürlich nicht auf.
Wenn ich entscheide, die Anwendung zu debuggen, wenn es abstürzt, sehe ich die folgende Nachricht.
Nicht behandelte Ausnahme bei 0x6c5dedf5 in iexplore.exe: 0xC0000005: Zugriffsverletzungsleseposition 0x00000090.
Die Top-5-Elemente in der Call-Stack wie folgt aussieht
Vgx.dll! 6c5dedf5()
[Frames unten sein kann fehlerhafte und/oder fehlen, für Vgx.dll geladen Symbole]
Vgx.dll! 6c594d70()
Vgx.dll! 6c594f63()
Vgx.dll! 6c595350()
Vgx.dll! 6c58f5e3()
mshtml.dll! 6f88dd17()
VGX.dll scheint Teil des vml Renderers zu sein, und ich benutze tatsächlich VML. Ich bin nicht überrascht, weil ich so viele Probleme mit Vml hatte, Attribute müssen in einer bestimmten Reihenfolge gesetzt werden, manchmal können Sie keine Attribute setzen, wenn Sie Elemente an das Dom angehängt haben oder umgekehrt (alles undokumentiert BTW), aber dann die Probleme kann in der Regel reproduziert werden, wenn aber nicht jetzt
Das Problem tritt auch in keinem Plugin-Modus :(
Debuggengibt es einen besseren Ansatz als Versuch und Irrtum diese
bearbeiten zu lösen.? Das Hinzufügen einer Konsole, die jede verdächtige Änderung an das DOM ausgibt, hat das Problem nur manchmal verursacht in Javascript auf der gleichen Seite implementiert, ich bin in der Lage, die Ausgabe auch nach einem Absturz zu sehen, da das Fenster noch sichtbar ist) Anscheinend scheint es eine Art Race Condition zu sein.
Es ist mir gelungen, es noch weiter zu verfolgen, und es scheint zu vorkommen, wenn Sie ein Objekt aus dem DOM zu schnell entfernen, nachdem es gerade hinzugefügt wurde. (höchstwahrscheinlich nur für vml-elemente mit einigen speziellen attributen, habe es nicht weiter versucht) Und es kann nicht behoben werden, indem man eine dead loop vor removeChild hinzufügt (ziemlich schlechte lösung sowieso), die seite muss von der gerendert werden Browser einmal nach dem AddChild, bevor Sie RemoveChild aufrufen können. seufzen
Nur ein Scherz - aber, na ja, können Sie möglicherweise eine (andere) fertigen Exploit für IE von diesem. Ich meine, du liest am Ende aus irgendeinem Speicherort. Vielleicht kannst du das dazu bringen, etwas wirklich Schlimmes zu tun. Außerdem sollte ein vollständig gepatchtes und aktuelles Windows/IE von keiner Website abstürzen, egal wie falsch der Code ist. Vielleicht gibt es einen Ort, um dies zu melden? – zerm
Bitte senden Sie mir eine Repro-Seite oder URL; Ich freue mich, einen Blick darauf zu werfen! (ericlaw @ Microsoft). Vielen Dank! – EricLaw
FYI, das nächste Mal setzen Sie Ihren Symbol-Server auf den Microsoft Symbol Server, um einen besseren Aufruf-Stack zu erhalten: http://msdn.microsoft.com/en-us/library/b8ttk8zy%28v=vs.80%29.aspx –