[SOS] Bug VmWare, Qemu et Bochs.

LfvrChris at aol.com LfvrChris at aol.com
Jeu 11 Aou 17:12:23 CEST 2005


Bonjour,

Je vais vous exposer un problème concernant la recherche de bug et je souhaiterai avoir votre avis en retour.

J'ai implémenté le code correspondant à l'article gérant les pages physiques. Suite à cela, j'ai utilisé VmWare pour le simuler et un "bug" est apparu. Ce bug concerné une zone mémoire correspondant à la page physique 259. Cette page physique comporte 2 buffers. Le premier s'appelle before et le second after. Le problème observé est qu'après avoir rempli ces 2 buffers avec l'adresse de la page physique; pour une raison non encore expliqué; le buffer before à l'index 1 ne comportait pas l'adresse de la page physique mais une autre valeur.

J'ai donc expérimenté d'autres tailles mémoires et toujours le même défaut, c'est à dire une non concordance entre l'adresse de la page physique et le contenu du buffer before à l'index 1.

Exemple:
Taille mémoire: 12 Mo.
Page physique: 259.
Adresse page physique: 11522048.
Before[1]: 8507392.

Exemple:
Taille mémoire: 16 Mo.
Page physique: 259.
Adresse page physique: 15716352.
Before[1]: 8507392.

Exemple:
Taille mémoire: 28 Mo.
Page physique: 259.
Adresse page physique: 28299264.
Before[1]: 25284608.

Le problème survient pour les adresse mémoires 12Mo, 16Mo, 28Mo, 32Mo, 44Mo, 48Mo, 60 Mo, 64Mo, etc...

Ce qui est surprenant c'est le fait que cela arrive toujours pour la même page physique (page 259) et pour le même index (index 1) dans le tableau before.

Pour tenter de comprendre la provenance, j'ai dans un premier temps vérifier les macros utilisées pour gérer les listes. Pas de défaut. Dans tous les cas s'il y avait eu un bug, ce bug serait également apparu lors de la création ou de la gestion des 2 listes qui gérent les pages libres et les pages occupées.

J'ai donc poursuivi en utilisant un pointeur qui pointe sur cette page physique et j'ai forcé l'écriture dans le tableau before à l'index 1. j'ai ensuite vérifié que l'écriture s'était bien réalisé en l'affichant à l'écran. Tout allait bien jusque là.

Le problème survient juste après, lorsque le programme rentre dans la boucle pour réserver des pages et les remplir avec le contenu de l'adresse de la page physique.

Malgré le fait d'avoir forcé l'écriture précédemment, au moment de l'éxécution de cette boucle, le contenu change pour prendre une valeur indéterminée.

J'ai donc décidé de tester avec d'autres émulateurs, j'ai utilisé bochs et qemu et là pas de défaut.

J'aimerais savoir si quelqu'un utilise VmWare ?
Est-il possible de m'aider pour que je puisse définir l'origine du problème (bug de programmation ou défaut de VmWare ?) ?

Merci de votre aide.

Cordialement,

Krys.


Plus d'informations sur la liste de diffusion Sos