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

Langage C++ Discussion :

Crash depuis cet après midi.


Sujet :

Langage C++

  1. #1
    Invité
    Invité(e)
    Par défaut Crash depuis cet après midi.
    Salut, j'ai un crash depuis cet après midi, pourtant je n'ai pas modifié mon code depuis et ce matin ça marchait.

    Voici ce que m'indique valgrind :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    ==11959== Invalid read of size 1
    ==11959==    at 0x4C2E0F4: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==11959==    by 0x6486160: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
    ==11959==    by 0x4523C8: odfaeg::network::Network::sendPbKey(odfaeg::network::User&) (in /home/laurent/Développement/Projets-c++/ODFAEGVIDEOTUTORIAL/bin/Debug/ODFAEGVIDEOTUTORIAL)
    ==11959==    by 0x44F575: odfaeg::network::SrkServer::checkMessages() (in /home/laurent/Développement/Projets-c++/ODFAEGVIDEOTUTORIAL/bin/Debug/ODFAEGVIDEOTUTORIAL)
    ==11959==    by 0x4330F1: odfaeg::core::Application::exec() (application.h:84)
    ==11959==    by 0x432E1A: main (main.cpp:4)
    ==11959==  Address 0xc278f50 is 0 bytes after a block of size 32 alloc'd
    ==11959==    at 0x4C2B800: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==11959==    by 0x44AA48: odfaeg::network::AES_ENC::AES_ENC() (in /home/laurent/Développement/Projets-c++/ODFAEGVIDEOTUTORIAL/bin/Debug/ODFAEGVIDEOTUTORIAL)
    ==11959==    by 0x4312A8: _GLOBAL__sub_I_symEncPacket.cpp (in /home/laurent/Développement/Projets-c++/ODFAEGVIDEOTUTORIAL/bin/Debug/ODFAEGVIDEOTUTORIAL)
    ==11959==    by 0x4DF14C: __libc_csu_init (in /home/laurent/Développement/Projets-c++/ODFAEGVIDEOTUTORIAL/bin/Debug/ODFAEGVIDEOTUTORIAL)
    ==11959==    by 0x6C6FE54: (below main) (libc-start.c:246)
    ==11959== 
    ==11959== Conditional jump or move depends on uninitialised value(s)
    ==11959==    at 0x4C2E0F8: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==11959==    by 0x6486160: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
    ==11959==    by 0x452407: odfaeg::network::Network::sendPbKey(odfaeg::network::User&) (in /home/laurent/Développement/Projets-c++/ODFAEGVIDEOTUTORIAL/bin/Debug/ODFAEGVIDEOTUTORIAL)
    ==11959==    by 0x44F575: odfaeg::network::SrkServer::checkMessages() (in /home/laurent/Développement/Projets-c++/ODFAEGVIDEOTUTORIAL/bin/Debug/ODFAEGVIDEOTUTORIAL)
    ==11959==    by 0x4330F1: odfaeg::core::Application::exec() (application.h:84)
    ==11959==    by 0x432E1A: main (main.cpp:4)
    ==11959== 
    client connected!
    ==11959== Jump to the invalid address stated on the next line
    ==11959==    at 0x3F800000: ???
    ==11959==  Address 0x3f800000 is not stack'd, malloc'd or (recently) free'd
    ==11959== 
    ==11959== 
    ==11959== Process terminating with default action of signal 11 (SIGSEGV)
    ==11959==  Access not within mapped region at address 0x3F800000
    ==11959==    at 0x3F800000: ???
    ==11959==  If you believe this happened as a result of a stack
    ==11959==  overflow in your program's main thread (unlikely but
    ==11959==  possible), you can try to increase the size of the
    ==11959==  main thread stack using the --main-stacksize= flag.
    ==11959==  The main thread stack size used in this run was 8388608.
    ==11959== 
    ==11959== HEAP SUMMARY:
    ==11959==     in use at exit: 2,448,804 bytes in 4,056 blocks
    ==11959==   total heap usage: 10,013 allocs, 5,957 frees, 3,926,877 bytes allocated
    ==11959== 
    ==11959== LEAK SUMMARY:
    ==11959==    definitely lost: 2,540 bytes in 14 blocks
    ==11959==    indirectly lost: 0 bytes in 0 blocks
    ==11959==      possibly lost: 18,759 bytes in 254 blocks
    ==11959==    still reachable: 2,427,505 bytes in 3,788 blocks
    ==11959==         suppressed: 0 bytes in 0 blocks
    ==11959== Rerun with --leak-check=full to see details of leaked memory
    ==11959== 
    ==11959== For counts of detected and suppressed errors, rerun with: -v
    ==11959== Use --track-origins=yes to see where uninitialised values come from
    ==11959== ERROR SUMMARY: 5 errors from 3 contexts (suppressed: 1 from 1)
    Processus arrêté

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 438
    Points
    2 438
    Par défaut
    Bonsoir.

    Sans code c'est difficile de dire ce qui cloche.
    Mais dans le log, il est question de network, peut être le problème vient du réseau ?
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Heu, tu as pensé à la solution universelle : le débuggeur ???

    Car, sans le code qui reproduit l'erreur, il sera difficile de te venir en aide.

    Et, comme il s'agit d'un crash sauvage, j'aurais tendance à croire que tu fais encore de la semoule avec tes pointeurs, ce qui tendrait, en plus à faire en sorte que l'erreur réelle se trouve en réalité bien loin de l'endroit où le crash se produit
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Heu, tu as pensé à la solution universelle : le débuggeur ???

    Car, sans le code qui reproduit l'erreur, il sera difficile de te venir en aide.

    Et, comme il s'agit d'un crash sauvage, j'aurais tendance à croire que tu fais encore de la semoule avec tes pointeurs, ce qui tendrait, en plus à faire en sorte que l'erreur réelle se trouve en réalité bien loin de l'endroit où le crash se produit
    Le débuggeur ne m'indique rien. (Il ne m'indique pas le nom de la fonction qui plante)

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    tu as bien compilé avec les informations de débug (-g pour gcc)?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui.

  7. #7
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Si c'est compilé avec les infos de debug, il devrait être possible de récupérer la pile d'appels (?)
    Çà ne te donnera pas forcément l'endroit de l'erreur, mais au moins l'endroit où elle est détectée, c'est un début.

    Sinon, le crash est reproductible à 100 % ? Si c'est pas le cas, ça peut être un problème de threading ou de variable non initialisée.
    Valgrind reporte une erreur (ou warning ?) la dessus, ça n'a peut être aucun rapport, mais ça vaut le coup d'y jeter un œil.

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 393
    Points : 685
    Points
    685
    Par défaut
    Tu es génial, Lolilolight. http://www.developpez.net/forums/d15...tes-suspectes/
    Quand tu as un bug avec ton code, tu penses en premier à une intrusion sur ton PC de quelqu'un qui a changé la lib C++ de gcc.
    Pourquoi pas, quand on a un bug, il faut explorer toutes les pistes...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Pfff, j'en ai marre de votre mauvaise foi et de votre ingratitude, je n'ai même plus envie de vous répondre...

    Quand on ne sait pas ce que je fais dans la vie, ni ce que je deviens, on se tais!

  10. #10
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Salut, vais tenter de te filer un coup de main si tu veux bien .

    Déjà pourrais-tu poster le code de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    odfaeg::network::Network::sendPbKey
    Apparemment tu as un invalid read dedans, qui conduit à un conditional jump, puis à un segfault.
    Par contre tu n'as pas du compiler tout tes fichiers avec le debug (-g/-ggdb3 dans le CCFLAGS).
    En faisant ça tu auras la ligne exacte qui pose problème.

    Le fait que ça ne crash pas avant mais crash maintenant peut très bien dépendre de l'initialisation de ta mémoire, il suffit qu'un jour ta mémoire soit de bonne humeurs pour que ça marche et le lendemain non. .
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  11. #11
    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
    En faisant ça tu auras la ligne exacte qui pose problème.
    Plus réalistement, la ligne où c'est parti en sucette, le problème peut être bien avant, malheureusement.

    Lolilolight, ARRETES de faire ton Calimero, du code qui tombe en marche et qui arrête de fonctionne après un certain temps (passage aux multi-CPU, changement d'heure, passage d'un DEAL sur swap de taux sur emprunt avec plus de 1000 coupons trimestriels, etc...), c'est un truc qui arrive tout les jours (oui, les exemples sont du vécu, et même sur du code qui à vue passer des milliard et des milliards d'€ de transaction pendant plus de 15 ans et 2 migrations d'OS complètement différents).

    Donc on enlève ces œillères et ces doigts du c., Lolilolight.

  12. #12
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bacelar Voir le message
    passage d'un DEAL sur swap de taux sur emprunt avec plus de 1000 coupons trimestriels
    Kamoulox?
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  13. #13
    Invité
    Invité(e)
    Par défaut
    J'ai dû perdre la mémoire, j'aurai dû deviner, c'était tellement évident!

  14. #14
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Points : 1 211
    Points
    1 211
    Par défaut
    Citation Envoyé par Lolilolight Voir le message
    Pfff, j'en ai marre de votre mauvaise foi et de votre ingratitude, je n'ai même plus envie de vous répondre...
    Le deuche du C++

    Personnellement quand je vois que tu as lancé/es intervenu sur un thread, je ne prends même plus la peine de lire le sujet ...
    Parce qu'à chaque fois c'est la même chose, tu viens exposer un problème et quand les autres te proposent une solution, tu n'en prends aucunement compte. Ta solution est toujours la meilleure, et même quand au bout de trois pages de débat on réussit à prouver que t'es dans le faux, tu ne remets absolument pas ta façon de faire en question ... et c'est comme ça sur tous les threads que j'ai eu l'occasion de voir !
    Sans compter que, sans vouloir t'offenser, tu m'as l'air d'avoir de sérieuses lacunes sur des connaissances très basiques et ça me semble important de le souligner puisque ce n'est absolument pas à l'avantage de ceux qui posent des questions sérieuses et que tu embrouilles avec tes réponses bancales (et rarement justes) ...

    Alors ne t'étonnes pas si tu te mets à dos tous ceux qui veulent vraiment t'aider ... et c'est surement pas en les qualifiant d'ingrats que ça va arranger les choses

    Quand on ne sait pas ce que je fais dans la vie, ni ce que je deviens, on se tais!
    Ce que tu deviens je sais pas, par contre tu fais un framework pour jeux vidéo. Mais quand je vois le code que tu fournis et les soucis que tu rencontres ... je me dis qu'Unity3D c'est pas mal non plus

  15. #15
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Hormis les trolls sur lolilolight....

    Ton problème vient surement d'un dépassement mémoire modifiant trop loin.... et donc faisant crash une partie qui ne devrait pas planter.
    Ce type d'erreur peut expliquer pourquoi un jour ça fonctionne et d'autre pas.. c'est de la chance... tout va dépendre de ou l'allocation est faite en mémoire. Et généralement visual studio alloue souvent au même emplacement dans son context (c'est facile à vérifié en debug, tu relances "F5" et tu auras la même adresse sur 2 exécutions différentes)

    Il faut juste trouver les dépassements mémoire. (solutions : marquage des allocations (la plus cool et efficace) et Valgrind si tu veux utiliser des outils externes)
    Homer J. Simpson


  16. #16
    Invité
    Invité(e)
    Par défaut
    Oui, ça doit sûrement être ça le problème, bref, je vais y regarder...

  17. #17
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    De rien...
    Homer J. Simpson


Discussions similaires

  1. [forum] Suractivité de la Taverne le vendredi après midi
    Par haltabush dans le forum La taverne du Club : Humour et divers
    Réponses: 34
    Dernier message: 19/10/2007, 16h10

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