[SOS] Traitement d'un "stack overflow"
Cyril Dupuit
cyrildupuit at hotmail.com
Sam 10 Juin 10:47:09 CEST 2006
Salut,
Comme convenu, j'ai placé les sources sur un site. Ces sources sont
accessibles sur http://perso.orange.fr/koalys/downloads/dbf-sos-9_5.zip.
Ces sources sont celles de la version « sos-code-article9.5 » dont les
modifications suivantes ont été apportées :
- main.c : Suppression du code non utilisé pour effectuer ce test
(suppression du code d'initialisation des processus, suppression du code de
gestion de la charge CPU, gestion des tty, etc...). Ajout de la fonction
récursive Toto() dans le thread stat_thread().
- gdt.c : Ajout de la fonction sos_gdt_register_double_fault_tss() afin
d'initialiser la TSS de double faute.
- idt.c : Modification de la fonction sos_idt_subsystem_setup() afin qu'elle
initialise une task gate dans l'entrée 8 (double fault) de l'IDT.
- cpu_context.c : Modification de la fonction
sos_cpu_context_subsystem_setup() afin qu'elle initialise la TSS de double
fault.
- segment.h : Ajout du define SOS_SEG_DBL_FAULT_TSS utilisé pour initialiser
le segment de double fault dans la TSS.
Le résultat obtenu est toujours le même. Il m'est impossible de tomber dans
l'exception de double fault. Qému se bloque, bochs affiche un résultat
erroné et un véritable PC reboot sans cesse (le fameux triple fault que tu
m'as expliqué la dernière fois).
Je ne sais pas quoi te dire de plus si ce n'est que je n'arrive pas à
comprendre ce qu'il se passe.
Merci encore.
Cyril
Plus d'informations sur la liste de diffusion Sos