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

 C Discussion :

[VALGRIND] Conditional jump or move depends on uninitialised value(s)


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 70
    Par défaut [VALGRIND] Conditional jump or move depends on uninitialised value(s)
    Bonjour,

    en netoyant quelques unes de mes fonctions favorites, j'ai voulu optimiser un peu et debuger avec Valgrind ma petite librairie.

    Mais la c'est le drame, je tombe donc sur un probleme mineur mais je vois pas quoi faire.

    Le message de valgrind est celui-ci :
    Conditional jump or move depends on uninitialised value(s).

    Et voici mon code xD:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int     wtablen(char **wtab)
    {
      int   i;
     
      i = 0;
      if (wtab)
        while (wtab[i])
          i++;
      return (i);
    }
    i est initialise, je ne pense pas aller trop loin dans le tableau...

    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 447
    Par défaut
    Bonsoir,

    Essaie … si c'est bien cette macro que tu utilises. A priori, NULL est résolue en ((void *)0) mais ce n'est pas une garantie. Cela dit, ce code est valide quand même valide, même si transtyper directement un pointeur en entier ou en booléen n'est pas très propre. Je ne sais pas pourquoi valgrind se plaint.



    Citation Envoyé par blazed Voir le message
    Et voici mon code xD:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int     wtablen(char **wtab)
    {
        …
     
        return (i);
    }
    « return » est un mot-clé, pas une fonction. Les parenthèses sont inutiles.

  3. #3
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Le problème est sûrement ailleurs, peut-on avoir un code compilable reproduisant le problème ?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 057
    Billets dans le blog
    142
    Par défaut
    J'utilise moi aussi de plus en plus valgrind, et je me demande si avec les options -v pour valgrind lors de l'executon, et l'option -g pour gcc à la compilation, on ne peut pas avoir un message plus précis. Du genre, indication de la ligne

    Sinon, mais je pense que j'ai tord,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int i = 0;
     
    i = 0;
    Expliciter la définition de i, lors de sa déclaration ...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 70
    Par défaut
    Bonjour,

    merci de toutes ces reponces, je n'ai toujours pas trouver de solution pour resoudre mon probleme. Je reposterais dans ce topic si je trouve au file des programmes

    Pour les parentheses sur le retrun c'est parce que j'aime bien ^^

    J'utilise ces flags pour valgrind :
    valgrind --leak-check=yes --show-reachable=yes

    Merci encore et au plaisir.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 447
    Par défaut
    Citation Envoyé par blazed Voir le message
    Pour les parentheses sur le retrun c'est parce que j'aime bien ^^
    Tu fais comme tu veux, mais tu te forces ainsi à prendre une mauvaise habitude. Ce n'est pas forcément ce qu'il y a de plus sensé. Cela risque de te conduire à terme à des effets de bords de ceux que tu rencontres aujourd'hui.

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 057
    Billets dans le blog
    142
    Par défaut
    Et puis peut être que vos collègues ne vont pas apprécié ( compagnie ). Du coup, vous allez vite changé. ( Surtout qu'un gars comme moi, il va vous le dire de changer, et risque de corriger ... )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Le message de valgrind est celui-ci :
    Conditional jump or move depends on uninitialised value(s).
    Ce message ne peut-il pas provenir du fait que l'argument x correspondant au paramètre wtab de la fonction n'est pas initialisé au moment de l'appel ?
    Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char ** x;
    ....
    wtablen(x);
    bien que, dans ce cas, l'erreur devrait être signalée sur la ligne de l'appel (mais c'est peut-être lié à un niveau d'optimisation du code ?).

  9. #9
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 70
    Par défaut
    diogene, merci pour l'idée je vais regarder dans ce sens car en effet j'utilise une moulinette de test pour différent cas de figure et cela pourrait provenir des tests.

    Mais ne vous inquiétez pas, si je devais travailler avec vous je changerais mon mode opératoire sans problème (et puis même si j'aime bien, c'est dans ma norme :p )

Discussions similaires

  1. Valgrind Conditional jump obscure
    Par Waether dans le forum C
    Réponses: 4
    Dernier message: 07/03/2015, 21h03
  2. strtok_r: Conditional jump or move depends on uninitialised value
    Par ikuzar dans le forum Bibliothèque standard
    Réponses: 2
    Dernier message: 19/03/2013, 15h36
  3. "Use of uninitialised value"
    Par |PaRa-BoL dans le forum Bibliothèque standard
    Réponses: 5
    Dernier message: 12/02/2009, 22h13
  4. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48
  5. Forcer jump short ou far
    Par Blustuff dans le forum Assembleur
    Réponses: 6
    Dernier message: 02/03/2003, 02h03

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