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

Dotnet Discussion :

[Multithreading] Détection des RunCondition et autres problèmes du MultiThreading


Sujet :

Dotnet

  1. #1
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut [Multithreading] Détection des RunCondition et autres problèmes du MultiThreading


    So voilà, depuis que je me suis mis au MultiThreading avec les lock, BeginInvoke et Thread il m'arrive pendant mes phases de test de voir mon programme crasher sur un point, mais jamais deux fois au même endroit. De plus, je n'arrive jamais à reproduire l'erreur pour voir ce qui se passe. J'ai même des problèmes très étranges ou dans un code semblable à celui-ci :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void biduleTruc()
    {
     ...
     biduleMachin(liste[i]);
    }
     
    void biduleMachin(MonObject value)
    {
     value.QuelqueChose(); <- NullReferenceException
    }
    j'obtient donc un NullReferenceException avec value qui est null et tous les éléments de liste non nuls .

    Pour finir, parfois le programme crash au bout de 4 secondes, parfois (comme maintenant là tout de suite), mon programme de test tourne pendant plusieurs dizaines de minutes sans rencontrer la moindre erreur ...

    Existe-t-il donc des outils dédiés aux tests relatifs aux applications multithread qui permettent de détecter les problèmes qui pourraient en résulter ?

    Merci d'avance ...

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    Alors je suis pas un spécialiste de la question et ma réponse ne t'aidera pas beaucoup, mais je me lance qd même. Tu te heurtes aux pb classiques du multithreading et à la difficulté de reproduction des bugs. Je ne crois pas qu'il existe des outils qui permettent d'analyser le code pour détecter des erreurs de ce type, par contre ya des "méthodes" de développement qui permettent de diminuer les dégats: faut etre rigoureux et synchroniser tous les accés à des objets partagés (à partir du moment ou qqun écrit dans ces objets bien sur), essayer de mettre beaucoup de trace pour voir aprés coup ce qui s'est passé et dans quel ordre. La revue de code c'est pas mal aussi, un autre oeil verra peut etre mieux que toi l'erreur.

    Par contre t'as des outils pour obtenir des dumps du code qui crash et pour debuguer ces dumps ensuite. ça peut etre trés utile pour les crach en production (regarde du coté de adplus, windbg et SOS)...

    Enfin voila, bon courage .

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Finalement j'ai refait la partie de mon programme qui utilise le plus les locks en réfléchissant un peut plus à la manière de les utiliser (trop de lock et on se retrouve avec une attente circulaire, le thread attend un autre qui attend le premier ...) et j'ai bataillé toute une après midi pour trouver un bug qui tient à "> 0" au lieu de "> -1" (ça change tout, l'un des deux faits crasher l'application, l'autre et ça marche nikel...)

    Par contre, comment utilises-t-on windbg ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Je ne pense pas qu'on puisse expliquer comment utiliser windbg de manière générale dans un forum et surtout je ne connais pas encore assez bien cet outil pour ça . Je suppose que le mieux est déja de le télécharger (debugging tools for windows), de regarder l'aide, lire des articles etc... Ya aussi un assez bon bouquin que je suis en train de lire dont le tier est consacré à ces outils : voir ici.

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Ok merci, à partir de là je vais faire mes recherches
    Résolu (si on veut ... )

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

Discussions similaires

  1. Problème métadonnée oracle (Détection des MAJ)
    Par Bouga74 dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 22/04/2010, 09h08
  2. Réponses: 2
    Dernier message: 02/04/2010, 16h25
  3. Réponses: 1
    Dernier message: 29/10/2009, 17h28
  4. [RegEx] problème de détection des accents
    Par benoitB dans le forum Langage
    Réponses: 1
    Dernier message: 01/01/2008, 23h43
  5. Réponses: 14
    Dernier message: 12/04/2007, 20h09

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