[Kos-dev] Bug : premieres investigations

Thomas Petazzoni kos-dev@enix.org
Sun, 03 Jun 2001 16:28:07 +0200


salut,

j'ai discute jeudi d'un bug avec d2 : avec le dernier CVS, bochs freeze
apres la suppression d'un thread recursive (a cause de la fin de sa
recursion).

il apparaissait que les interruptions timer n'avaient plus lieu lors de
l'execution de ce thread et c'est bien le cas, j'ai verifie en modifiant
bochs. pourtant j'ai checke tous les retours d'interruptions, et a
chaque fois le bit IF (bit 9) du EFLAGS est a 1. donc normalement elles
devraient encore avoir lieu.

d'autre part, le freeze a lieu apres le retour d'interruption declenche
par le cpl0_switch_no_return declenche par le thread_end_handler, du a
la fin du thread_recursive en question. ce retour d'interruption a bien
lieu avec un bit IF a 1 dans le EFLAGS. le retour se fait sur un
thread_twiddle (trouve grace au genial lookup_symbol de d2).

il est a noter que durant la recursion du thread des pages faults, donc
des double faults ont bien lieu, mais plus d'interruption timer : donc
un cli ne semble pas etre a l'origine du probleme, mais plutot un oubli
de EOI, qui fait que les IRQs ne sont plus generees...

a creuser,

thomas
-- 
PETAZZONI Thomas
thomas.petazzoni@meridon.com     UIN : 34937744
Projet KOS : http://kos.enix.org
Page Perso : http://www.enix.org/~thomas/