Ho un sito Web che improvvisamente ha iniziato a bloccare Internet Explorer.Il mio sito Web continua a bloccarsi IE, impossibile eseguire il debug
Il sito Web carica e avvia l'esecuzione di javascript ma da qualche parte la macchina esplode. Non ho nemmeno un errore di script, si blocca solo. Ho provato a scorrere manualmente ogni singola riga di js con il debugger integrato, ma ovviamente il problema non si verifica.
Se scelgo di eseguire il debug dell'applicazione quando si blocca, viene visualizzato il seguente messaggio.
Eccezione non gestita a 0x6c5dedf5 in iexplore.exe: 0xC0000005: posizione di lettura di violazione di accesso 0x00000090.
I primi 5 articoli in stack di chiamate assomiglia a questo
Vgx.dll! 6c5dedf5()
[Fotogrammi di seguito potrebbero essere errati e/o mancante, senza simboli caricati per Vgx.dll]
Vgx.dll! 6c594d70()
Vgx.dll! 6c594f63()
Vgx.dll! 6c595350()
Vgx.dll! 6c58f5e3()
mshtml.dll! 6f88dd17()
VGX.dll sembra essere parte del renderer di vml e in effetti utilizzo VML. Non sono sorpreso perché ho avuto così tanti problemi con vml, gli attributi devono essere impostati in ordine specifico, a volte non puoi impostare attributi quando hai elementi collegati alla dom o viceversa (tutto non documentato btw) ma poi i problemi di solito può essere riprodotto in fase di debug, ma non ora :(
Il problema si verifica anche in nessun plug-mode
v'è un approccio migliore rispetto tentativi ed errori per risolvere questo
Edit:.? L'aggiunta di una console che emette ogni modifica sospetta al DOM ha fatto si che il problema si verifichi solo occasionalmente (la console è anche implementato in javascript nella stessa pagina, sono in grado di vedere l'output anche dopo un crash in quanto la finestra è ancora visibile) Apparentemente sembra essere una sorta di condizione di gara.
Sono riuscito a rintracciarlo ulteriormente e sembra che si verifichi quando si rimuove un oggetto dal DOM troppo rapidamente dopo che è stato appena aggiunto. (molto probabilmente solo per gli elementi vml con qualche attributo speciale, non ho provato ulteriormente) E non può essere risolto aggiungendo un ciclo morto davanti a removeChild (soluzione piuttosto cattiva comunque), la pagina deve essere resa dal browser una volta dopo l'addChild prima di poter chiamare removeChild. sospiro
Sto scherzando - ma, beh, si potrebbe essere in grado di forgiare un (altro) exploit per IE da questo. Voglio dire, finisci per leggere da qualche parte di memoria. Forse puoi farti fare qualcosa di veramente brutto. Inoltre, un windows/IE completamente aggiornato e aggiornato non dovrebbe bloccarsi da nessun sito Web, indipendentemente da quanto errato sia il codice. Forse c'è un posto dove segnalarlo? – zerm
Inviami una pagina di ripro o URL; Sono felice di dare un'occhiata! (ericlaw @ microsoft). Grazie! – EricLaw
FYI, la prossima volta impostare il server dei simboli sul server dei simboli Microsoft per ottenere uno stack di chiamate migliore: http://msdn.microsoft.com/en-us/library/b8ttk8zy%28v=vs.80%29.aspx –