[Kos-dev] "Race condition" 1

Thomas Petazzoni kos-dev@enix.org
Wed, 28 May 2003 09:19:13 +0200


This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enigF773F9645A42DE03D9FA5BD9
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

Hello,

> Je me relis et je me dis "portnawak le gars". Je voulais dire plutot
> faire un and registre = eflags & 1<<9, puis cmp registre avec un jne
> derriere, pour boucler qd on voit que IE est a 1.

Le problème est qu'il faudrait tester la valeur de Eflags avant de faire
le IRET, donc le récupérer sur la pile. J'avais essayé de récupérer le
EIP, et de l'afficher en utilisant une fonction dump_symbol qui affiche
le nom d'un symbole (en utilisant addr2sym), mais j'avais pas réussi.

Ceci dit, on peut récupérer le Eflags, tester le bit 9. A noter que dans
mes expérimentations, j'avais eu l'affichage d'une valeur à 0x202, ce
qui fait 514 si je ne m'abuse, soit  (1 << 9) | (1 << 1). Donc des
interruptions activées en sortie de cpl0_switch_with_return à un moment
donné (mais ce n'était pas au moment du crash, mais bien avant, presque
au début du système).

Il faudrait aussi tester si dans le cas normal de destruction d'un
thread (un seul thread qui se détruit à un moment donné), on passe bien
par cpl0_switch_no_return, puis par cpl0_switch_with_return. Ensuite, on
essaiera de comprendre pourquoi lorsque deux suppressions arrivent
quasiment simultanément, ça chie dans la colle.

J'avoue ne pas avoir trop d'idées pour ce bug.

Thomas
-- 
PETAZZONI Thomas - thomas DOT petazzoni AT enix DOT org - UIN : 34937744
Web: http://www.enix.org/~thomas/
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

--------------enigF773F9645A42DE03D9FA5BD9
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQE+1GLx9lPLMJjT96cRAjH5AJ48XfaR7kQSKjMPCafpaZBEo9HLIgCbBXfW
1OaYZW4K1HQEpDOG4bePu8k=
=3M3H
-----END PGP SIGNATURE-----

--------------enigF773F9645A42DE03D9FA5BD9--