segmentation fault pthread
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

segmentation fault pthread



  1. #1
    invite6201c031

    segmentation fault pthread


    ------

    Bonjour a tous,

    Actuellement stagiaire au sein d'une entreprise de sécurité informatique, je dois développer une bibliothèque partagée sous Linux et la charger dynamiquement lors de l'exécution de mon main.

    Jusque là tout va bien jusqu'à obtenir le message d'erreur que tout le monde adore "Segmentation fault".

    Donc je lance gdb ... qui me dit

    Code:
    Program received signal SIGSEGV, Segmentation fault.
    0xb7fc5cc6 in pthread_create@@GLIBC_2.1 () from /lib/libpthread.so.0
    (gdb) where
    #0  0xb7fc5cc6 in pthread_create@@GLIBC_2.1 () from /lib/libpthread.so.0
    #1  0xb7fc62f8 in pthread_create@GLIBC_2.0 () from /lib/libpthread.so.0
    #2  0xb7fdcc31 in Start (Path=0xbffff424 "./", ServerName=0xbffff3f2 "MTLSServerTest") at libmtlsc4linux.c:251
    #3  0x08073871 in main (nArgs=5, Args=Cannot access memory at address 0x4
    ) at mtls_client4linux.c:172
    
    Pour vous aider voici les proto en question 
    
    
    rc = pthread_create(pSession->hThread, NULL, Client_Thread, (void *) &pSession);
            if(!rc)
            {
                    printf("ERROR: return code from pthread_create() is %d\n", rc);
                    return !0 ;
            }
    
    typedef struct
    {
            char * ServerName;
            char * ClientName;
            pthread_t* hThread;
    } 
    
    void* Client_Thread(void *lpParameter)
    Voila si quelqu'un à la moindre d'idée d'où peut provenir cette erreur et qu'il m'en fait part je lui en serais reconnaissant !

    Merci à tous et bonne fin de journée

    P.S : j'oubliais de préciser que bien entendu lors de la compilation de mon prog j'ajoute le fameux "-lpthread" histoire d'éviter à certains une perte de temps

    -----
    Dernière modification par yoda1234 ; 20/06/2011 à 18h24.

  2. #2
    ProgVal

    Re : segmentation fault pthread

    Bonjour,

    Je suis loin d'être un expert en C, mais, donner NULL en argument, alors que la fonction attend un pointeur, c'est source d'accès au début de la mémoire (comme 0x4), non ?
    En plus, je ne crois pas que ça soit très propre de convertir une référence en void*.

    ProgVal

  3. #3
    bzh_nicolas

    Re : segmentation fault pthread

    Citation Envoyé par ProgVal Voir le message
    Bonjour,

    Je suis loin d'être un expert en C, mais, donner NULL en argument, alors que la fonction attend un pointeur, c'est source d'accès au début de la mémoire (comme 0x4), non ?
    En plus, je ne crois pas que ça soit très propre de convertir une référence en void*.

    ProgVal
    Pas de soucis de ce côté là, NULL à cet argument indique d'utilisé les attributs par défaut. Convertir une référence en void* est également assez courant (surtout en prog système).

    Pas facile de répondre avec si peu de code le problème, AMHA, viens d'une des 2 parties suivantes:
    rc = pthread_create(pSession->hThread, NULL, Client_Thread, (void *) &pSession);

    Le premier je ne pense pas trop (il n'y a pas trop de risque) mais vérifie quand même. Je pense plutôt que ça vient de l'argument passé à ton thread fils (pSession). Trace-le, histoire de voir si tout est OK de ce côté là.

  4. #4
    polo974

    Re : segmentation fault pthread

    Et il y a quoi exactement à la ligne 251 de libmtlsc4linux.c, vu que c'est là qu'il y a comme un os...

    si c'est la ligne indiquée, je dirais que pSession n'est pas alloué, et je trouve étrange de passer le pointeur d'un pointeur (en dernier paramètre)...

    et il est plus que probable que ce soit pSession->hThread qui pose problème, car la fonction l'utilise pour ranger quelque chose (un obscur identifiant de pthread).

    un pointeur pointe toujours quelque-part, c'est comme un flingue, mais si on ne fait pas l'effort de l'initialiser (de viser un endroit autorisé), on se tire dans le pied...
    Jusqu'ici tout va bien...

  5. A voir en vidéo sur Futura
  6. #5
    ventilopomme

    Re : segmentation fault pthread

    possible d'avoir le programme en entier ?
    exclu à jamais du présent

  7. #6
    polo974

    Re : segmentation fault pthread

    Citation Envoyé par ventilopomme Voir le message
    possible d'avoir le programme en entier ?
    pourquoi en entier, en void*, c'est bien aussi...
    Jusqu'ici tout va bien...

  8. #7
    ventilopomme

    Re : segmentation fault pthread

    Citation Envoyé par polo974 Voir le message
    pourquoi en entier, en void*, c'est bien aussi...
    de toute facon si c un int cela a la meme taille qu'un pointeur
    exclu à jamais du présent

  9. #8
    whoami

    Re : segmentation fault pthread

    Bonjour,
    Citation Envoyé par ventilopomme Voir le message
    de toute facon si c un int cela a la meme taille qu'un pointeur
    Pas forcément : dépendant de l'implémentation du compilateur, du système cible, ...

    La norme C se contente de fixer des tailles relatives :

    taille char <= short <= int <= long <= long long

    et pour les pointeurs, la taille ne devrait dépendre que du système cible.

  10. #9
    ventilopomme

    Re : segmentation fault pthread

    c'était une private joke
    exclu à jamais du présent

Discussions similaires

  1. Librairie pthread manquante pour OpenMP sous Windows
    Par invite87912a33 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 08/07/2010, 21h52
  2. probleme de "segmentation fault" (langage C)
    Par invitea0f03ccc dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 27/01/2009, 15h41
  3. Kernel Fault CHECK
    Par invite130799f6 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 8
    Dernier message: 19/10/2008, 11h17
  4. IFSI de montereau fault yonne
    Par invite855a410b dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 17/01/2008, 19h29
  5. J'ai un problème avec un segmentation fault
    Par gatsu dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 30/01/2007, 09h08