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

POSIX C Discussion :

[Reseau] Thread & Send


Sujet :

POSIX C

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 38
    Points
    38
    Par défaut [Reseau] Thread & Send
    Voilà, j'ai codé une application, dont la partie réseau est géré dans un thread, pour pouvoir lire & ecrire en permanence et les sockets en évitant les blocages.
    Jusque là, tout va bien, les 2 parties discutent sans problème.

    Mais lorsque je "tue" le serveur par un Ctrl+C, la fonction Send me fait planté mon programme client, sans aucun message d'erreur en sortie, et avant même de récuperer le moindre code d'erreur de la fonction (qui devrai en renvoyer un, vu qu'il n'y a plus de serveur). Cherchant déseperement le problème, j'ai vérifier qu'il n'y avait pas de fuites mémoires où accès simultané due au thread aux socket, où encore de mauvais paramètres de trames. Rien de tout ça. Juste réussi a voir qu'un signal SIGPIPE renvoyé par le thread visiblement...

    À l'aide de tracage, j'ai pu voir que c'était un problème entre le thread et la fonction send, sans avoir plus de détails. Je fait donc, en définitif, appel à vous pour pouvoir me sortir du bourbier, car là dessus, je sèche, et le projet est extremement important.

    (Pour info, application sous Linux et donc utilisant les pthreads)

    Merci beaucoup.

  2. #2
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Bon, j'ai réussi a arranger le truc en ajoutant ça (car je voulais tenter de capter les signaux du thread) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	sigset_t mask;
    	int rc;
    	sigfillset(&mask); /* Mask all allowed signals */
    	rc = pthread_sigmask(SIG_BLOCK, &mask, NULL);
    Le problème, c'est que je comprend pas vraiment où se situe le problème, car au final, j'ai juste réinitialiser la table de captage des signaux du thread, mais je ne le traite même pas.
    /me a du mal à comprendre, et /me cherche donc quelqu'un qui pourra lui expliqué...

  3. #3
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Et si tu "strace" ton client tu vois quoi ?
    Rq: tu lance "strace mon_client" au lien "mon_client"

    Sinon, est-ce que tu regarde les valeurs de retour de fonctions "correctement" ?

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  3. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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