Bonjour,

Je suis entrain de développer un petit programme à base de pthreads et j'observe un problème plutôt étrange.

Une fois le thread fils créer, je fais un appel à la fonction crypt() pour obtenir un hash DES (no comment sur sa sécu je sais ce que ça vaut.).

Bref, je fais un crypt("12345", "AA") dans mon main (avant de lancer les threads), et le résultat est correct. Quand je refais exactement la même manipe dans mon thread, un coup j'ai le bon résultat, un coup c'est un résultat "faux". Je n'arrive pas à comprendre pourquoi threads/crypt seraient incomptabiles....


Encore plus étrange, dans mon main je fais un for pour appeler 20 fois la fonction crypt(), avec les paramètres précédent. J'obtiens 20 résultats identiques (AAKTK/CcEYEs6) [normal me direz-vous!]. Dans mon thread, j'ai fais la même chose, et si je lance mettons 3 fois mon programme, je vais obtenir :
1. 3-4 résultats corrects et le reste des résultats faux
2. 20 résultats corrects
3. 5 résultats corrects et le reste des résultats faux

Exemple de code fonctionnel (je m'en sert de référence pour mes tests) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
#define _XOPEN_SOURCE
 
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
 
 
int main(int argc, char *argv[])
{
        if(argc != 3)
        {
                printf("%s <passwd> <seed>\n",argv[0]);
                exit(EXIT_FAILURE);
        }
 
        printf("%s = (%s) %s \n",crypt(argv[1], argv[2]), argv[2], argv[1]);
 
        return EXIT_SUCCESS;
}
La j'avoue je suis sec que j'y comprend rien.... quelqu'un aurait-il une idée ?


Merci