IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

execve hangs -> State: D disk sleep


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut execve hangs -> State: D disk sleep
    Bonjour,

    j'ai un problème lors de l'exécution de l'appel système execve: le processus appelant se bloque dans l'état disk sleep (il ne retourne donc jamais -> pas de message d'erreur ).

    Quelqu'un saurait-il me dire dans quel cas cela peut se produire?

    Voilà pour le problème.

    Contexte:

    je développe un framework de réplication passive générique.

    C'est quoi me direz vous?

    En gros, je prends n'importe quelle application, je la lance sur une machine (primary), je la trace (avec ptrace), et je catch toutes les modifications de son état (mémoire, syscall affectant le noyau, registres). A chaque checkpoint, j'envoie ses modifs (updates) à d'autres machines jouant le rôle de réplica, sur lesquelles des instances de la même application sont lancées, mais stoppées (d'ou le terme "passive"). Je mets à jour leur état avec les updates. Comme je bosse au user level, je ne peux pas modifier la mémoire du noyau, je réapplique donc les appels système afin d'avoir le même état noyau sur le primary et les réplicas.

    Le but? Si un le primary crash, je peux reprendre l'exécution de l'application sur un des réplica depuis le dernier checkpoint --> système "fault tolerant".

    Mon framework fonctionne très bien avec des programmes simples (je supporte les threads et forks sans problème) -> le mécanisme de réapplication des syscalls fonctionne donc correctement. Je suis juste bloqué lors de la "réapplication" de l'appel système execve...notez que pour réappliquer un appel système, je dois injecter du code dans l'application, et l'exécuter (peut-être un mécanisme de protection (éviter les exploits) à ce niveau là empêcherait l'exécution de execve)...

    Merci pour vos réponses :-)

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    C'est bon j'ai trouvé.

    C'est assez tordu en fait:

    Lors de l'exécution de l'appel système execve, tous les threads du processus courant sont tué. Or, pour la gestion de le réplication de l'espace d'adressage virtuelle du programme à répliquer (je ne vais pas entrer dans les détails du pourquoi -> plus d'info poste précédent), je crée (j'injecte) un thread utilitaire, que j'utilise pour certaine tâches spécifiques. Ce thread est en pause (avec l'appel system pause) et est réveillé uniquement lorsque j'en ai besoin. Je ne sais pas comment execve tue les threads du processus courant (SIGTERM?), mais il reste bloqué si l'un d'eux est dans l'état pause.

    Pour résumé:

    avant d'exécuter execve, s'assurer que tous les threads du processus courant ne soient pas en pause (syscall pause). S'il y en a, leur envoyer un signal SIGCONT pour reprendre leur exécution.

    Voilà

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/09/2010, 00h00
  2. [Thread] besoin sleep(delay)... car java mobilise CPU
    Par thierry198 dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 27/09/2004, 17h46
  3. [Thread]sleep()
    Par jokoss dans le forum Concurrence et multi-thread
    Réponses: 15
    Dernier message: 03/07/2004, 14h33
  4. Modifier une partion ntfs avec Disk druid
    Par Sébastien dans le forum Administration système
    Réponses: 5
    Dernier message: 24/09/2003, 14h58
  5. [langage] fonction sleep + probleme fenetre dos
    Par yokito dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2003, 19h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo