Forum Programmation.c SIGSEGV

Posté par  .
Étiquettes : aucune
0
7
nov.
2004
Bonjour,

Je suis en train de finaliser mon petit programme, avec des plugins et des threads (pthread). Ce que j'aimerais maintenant implémenter, c'est une gestion des segfault au niveau des threads afin qu'un plugin mal codé ne puisse pas faire planter l'ensemble de l'application. Je pourrais ainsi décharger le plugin en question, nettoyer ses données et tuer son thread sans compromettre le fonctionnement global de l'application.

Le problème, c'est que je ne sais pas trop comment coder ça proprement. Apparemment, les gestionnaires de signaux ne sont pas thread safe, donc je ne sais pas trop où installer mes gestionnaires pour avoir le résultat escompté.
Voici un petit schéma du fonctionnement de mon programme :

[Serveur]
|
/ \
[Gestion + Écoute TCP]
|||
[Pool de threads interpreteurs]->utilisent les fonctions du plugin

Ce sont donc les threads du pool qui risquent le plus de planter. Puis-je leur faire partager le même gestionnaire ? Ou alors tout gérer avec des pthread_kill() depuis le thread de gestion ?

Merci d'avance pour votre aide :)
  • # Hmmm

    Posté par  . Évalué à 3.

    Perso je le sens pas trop ton truc :) Si ton SIGSEGV se produit à la suite d'un double free, ou d'un buffer overflow qui a écrasé des variables utilisées par le thread principal ou autres joyeusetés, tu ne pourras de toute façon pas réobtenir un contexte cohérent pour continuer l'exécution de ton code.
    • [^] # Re: Hmmm

      Posté par  . Évalué à 1.

      C'est vrai qu'en cas de buffer overflow, ça risque de faire plus de dégâts qu'autre chose. De toute façon, j'ai du mal à trouver de la doc à ce sujet et ce n'est pas prioritaire, donc ---> oubliettes.
      Quoi qu'il en soit, merci pour ton aide :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.