Closed MaximeCheramy closed 9 years ago
chezmoicamarche.com
En augmentant la taille de la stack je n'ai plus de plantage. Est-ce que tu pourrais vérifier s'il n'y a pas un truc louche ? C'est une partie que je maîtrise pas :/.
Oui je vais essayer de regarder. En fait un bon début serait de vérifier via un watchpoint que le ptr de pile user ou kernel ne passe jamais en dessous de son minimum. Le problème c'est qu'un watchpoint sur esp bloquerait pour tous les process, donc c'est pas trivial à faire
Pour refaire planter, il me suffit de remettre une stack plus petite :
diff --git a/kernel/kprocess.c b/kernel/kprocess.c
index 03ab4b1..ccc5e68 100644
--- a/kernel/kprocess.c
+++ b/kernel/kprocess.c
@@ -626,7 +626,7 @@ SYSCALL_HANDLER3(sys_exec, char *cmdline, char **environ, int *retval)
if(fd != -1)
{
init_data.name = execpath;
- init_data.stack_size = 0x2000;
+ init_data.stack_size = 0x1000;
init_data.priority = 0;
init_data.args = cmdline;
Je n'arrive plus à reproduire.
Probablement lié aux signaux ? On peut fermer et réouvrir si on arrive à reproduire à nouveau après la correction des signaux ?
Je ferme pour la raison indiquée juste au dessus.
Souvent, un appel à getty (exemple getty /dev/tty1) fait planter mishell. C'est un grave problème pour moi vu que j'ai besoin de 2 consoles pour tester mes pipes.