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

VC++ .NET Discussion :

Killer un thread par son ID


Sujet :

VC++ .NET

  1. #1
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Killer un thread par son ID
    Bonjour à tous,

    J'ai un soucis avec des Threads. Je dispose d'un filtre DirectShow, qui lorsqu'il se lance créé un certain nombre de threads, mais ne les détruit pas lorsqu'il est supprimé. Je voudrais donc détruire ces threads à la main, sachant que je ne possède que leur ID. Je ne peux donc pas utiliser la fonctione TerminateThread puisque je n'ai pas de handle.
    Existe-t-il une autre fonction/manière de killer un thread en "brute force" ?
    Tout en sachant que je ne dispose ni du code du filtre directShow ni du code des Threads en question.

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    La manière forte n'est jamais la bonne avec les threads.
    Etes-vous sûr d'avoir correctement utilisé le filtre ?
    Lisez et assimilez sa documentation.
    Utilisez un débuggeur ou créez un dump mémoire du processus pour savoir sur quel objet Kernel attendent ces threads satellites.

    Vous pourrez ainsi voir pourquoi ils ne sont pas recyclés et donc connaître la nature de votre mauvaise utilisation du filtre.

    S'il y a vraiment un bug dans le filtre, vous pourrez plus facilement trouver une méthode de contournement grâce à notre ami Google.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Merci de votre réponse.

    Je sais bien que la manière forte n'est pas la bonne, malheureusement je crois, depuis près d'une semaine que je suis sur ce problème à plein temps, avoir exploré la majeure partie des possibilités.
    Je n'ai malheureusement que très peu de documentation concernant ce filtre, et rien concernant sa destruction. Je le detruit donc comme tout bon filtre DirectShow (ce qui fonctionne avec n'importe quel autre filtre).

    L'utilisation d'un debugger ne me donne rien, en revanche, j'ignore totalement comment créer un dump mémoire (n'ayant jamais été confrontée à ce genre de problème par le passé). Existe-t-il des utilitaires ? Est-ce du code à rajouter dans le programme?

    Ce filtre étant fourni par une société de vidéosurveillance, Google ne me donne rien à ce sujet, et l'entreprise pour laquelle je travaille n'ayant pas payé pour l'aide en ligne de cette société, impossible de se tourner vers elle pour avoir des réponses.

    Cependant, je sais que le filtre n'est pas buggé (à ce niveau là) puisque son utilisation avec GraphEdit fonctionne parfaitement. Je me doute donc bien que c'est moi qui fait quelque chose d'incorrect. Le soucis étant que je dois rendre le développement demain, et je souhaiterais donc "contourner" le problème temporairement pour avoir le temps ensuite de chercher une solution plus appropriée. D'où ma volonté de détruire ces threads afin que l'application fonctionne, même si c'est, je vous l'accorde, très très moche.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Parons à l'urgence.
    Utilisez un débuggeur, comme VS, qui puisse donner la liste des threads du processus et la pile d'appel de chacun d'eux.

    Donnez-nous les types d'objet sur lesquels attendent les threads grâce à ces piles d'appels.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    La pile des appels ne me donne rien d'autre que la liste des dll... Par exemple, pour l'un d'entre eux :
    ntdll.dll!7c91e514()
    [Les frames ci-dessous sont peut-être incorrects et/ou manquants, aucun symbole chargé pour ntdll.dll]
    ntdll.dll!7c91df5a()
    kernel32.dll!7c8025db()
    GxUIProxyWeb.dll!01001f18()
    GxUIProxyWeb.dll!01152794()
    GxUIProxyWeb.dll!011a1ccd()
    GxUIProxyWeb.dll!0100337a()
    msvcr90.dll!78543433()
    msvcr90.dll!785434c7()
    kernel32.dll!7c80b729()

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Installez les symboles du système.

    http://support.microsoft.com/kb/319037/fr

  7. #7
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Je vous remercie de votre aide, j'ai pu, avec celle d'un collègue débugger mon application.
    Encore merci.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Pouvez-vous indiquer le nom du filtre DirectShow et comment vous avez corrigé le problème, pour que les lecteurs du thread puissent en tirer parti ?

  9. #9
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par Madalen Voir le message
    Bonjour à tous,

    J'ai un soucis avec des Threads. Je dispose d'un filtre DirectShow, qui lorsqu'il se lance créé un certain nombre de threads, mais ne les détruit pas lorsqu'il est supprimé. Je voudrais donc détruire ces threads à la main, sachant que je ne possède que leur ID.
    Salut est-ce que ce filtre DS c'est toi qui l'a programmé ?
    C'est un filtre .ax ?

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

Discussions similaires

  1. arret d'un thread par son id ?
    Par gregcat dans le forum Windows Forms
    Réponses: 12
    Dernier message: 15/05/2008, 23h17
  2. Destruction d'un Thread par son ID ?
    Par gregcat dans le forum Delphi
    Réponses: 2
    Dernier message: 07/02/2007, 17h43
  3. Accéder à un serveur linux par son nom
    Par flatron dans le forum Réseau
    Réponses: 6
    Dernier message: 01/07/2004, 14h27
  4. Réponses: 4
    Dernier message: 06/06/2004, 12h07
  5. Réponses: 2
    Dernier message: 10/05/2004, 11h20

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