Le problèem des liaisons croisées, comme expliqué ci dessus, vient bien de la fat. le problème peut venir de plusieurs problèmes, mais le plus évident est le multitâche/multifichier.
Or IE est le programme qui écrit le plus de fichiers sur disque...
Je m'explique:
IE lance plusieurs threads, programmes qui vont charger des données depuis internet. Ces threads, en multitâche, travaillent en même temps. Alors voilà comment ca marche:
thread 1 > Windows, dis moi où je stocke ca ?
Windows > thread 1, met le à l'adresse 000:000F (par exemple)
thread 1 > Windows, je verouille l'adresse 000:000F
Windows > thread 1, c'est bien je suis content pour toi.
jusque là rien d'anormal.
maintenant en multi-thread, quand ca marche bien:
thread 1 > Windows, dis moi où je stocke ca ?
Windows > thread 1, met le à l'adresse 000:000F (par exemple)
thread 1 > Windows, je verouille l'adresse 000:000F
Windows > thread 1, c'est bien je suis content pour toi.
thread 2 > Windows, dis moi où je stocke ca ?
Windows > thread 2, met le à l'adresse 000:0010 (000F non libre)
thread 2 > Windows, je verouille l'adresse 000:0010
Windows > thread 2, c'est bien je suis content pour toi.
Mainant, ca devient plus compliqué:
thread 1 > Windows, dis moi où je stocke ca ?
Windows > thread 1, met le à l'adresse 000:000F (par exemple)
thread 2 > Windows, dis moi où je stocke ca ?
Windows > thread 2, met le à l'adresse 000:000F
thread 1 > Windows, je verouille l'adresse 000:000F
Windows > thread 1, c'est bien je suis content pour toi.
thread 2 > Windows, je verouille l'adresse 000:000F
Windows > thread 2, change c'est déjà pris, prends 000:0010
thread 2 > Windows, je verouille l'adresse 000:0010
Windows > thread 2, c'est bien je suis content pour toi.
Jusque là ca a l'air d'aller...
Maintenant scénario catastrophe:
thread 1 > Windows, dis moi où je stocke ca ?
Windows > thread 1, met le à l'adresse 000:000F (par exemple)
thread 2 > Windows, dis moi où je stocke ca ?
Windows > thread 2, met le à l'adresse 000:000F
thread 1 > Windows, je verouille l'adresse 000:000F
Windows > thread 1, c'est bien je suis content pour toi.
thread 2 > Windows, je verouille l'adresse 000:000F
Et là mystère Windows
- bugge
- plante
- fait pas gaffe
- autres suggestions ?
Windows > thread 2, c'est bien je suis content pour toi.
Et voilà la naissance de cette putain de liaison croisée.
Pour Info : je ne suis absolument pas sûr de cette réponse, mais je trouve que c'est une belle histoire. Quelqu'un pour confirmer/infirmer ?