none
Stack overflow

    Discussion générale

  • Bonsoir,

    Voici le message

    Process is terminated due to StackOverflowException.
    Le programme '[6168] SaisiePlan200.exe' s'est arrêté avec le code -2147023895 (0x800703e9).

    Il n'y a rien de particulier dans mon programme.

    J'ai déplacé des classes d'une dll dans le module principal, j'ai simplifié certaines classes avec pour seul résultat

    le déplacement du problème.

    Existe -il des outils pour localiser les fuites mémoires ou dans Visual Studio?

    Gérard

    lundi 30 avril 2018 20:52

Toutes les réponses

  • Bonjour,

    La question est intéressante, à défaut de réponse on peut jeter un coup d'œil au code.

    Ou si ça se trouve, il suffit d'y regarder de nouveau après deux mois et ça va être évident.

    Déjà si il y a moyen de savoir sur quelle instruction se produit l'erreur, ça peut donner une piste.

    lundi 4 juin 2018 11:20
  • Bonjour,

    Ce type d'exception indique donc un "Dépassement de pile". La pile est la zone mémoire utilisée pour transmettre les arguments d'un appel, et les variables locales. Cette pile est limitée (je ne me souviens plus de sa taille), et lorsque l'on provoque trop d'appels profonds (une méthode qui appelle, une autre méthode, etc.) on dépasse cette limite cette exception est levée.

    En revanche rien à voir avec une fuite de mémoire, car la limite est "restaurée" quand vous quittez la méthode en cours.

    C'est une erreur typique d'un appel récursif non contrôlé.

    Normalement votre exception est capturée par Visual Studio et vous devez pouvoir afficher la propriété "StackTrace" de votre exception, elle vous montrera la liste des appels en question, ca peut vous aider à trouver la récursivité qui pose problème.

    Cordialement,


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    lundi 4 juin 2018 12:00
  • C'est un peu pour ça que je proposais de partager le code.

    Si ça se trouve il n'y aura peut-être pas besoin : c'est typique d'une étourderie, qu'on voit immédiatement en ayant laissé le programme de côté quelque temps.

    Effectivement la StackTrace (qu'on trouve dans la fenêtre d'erreur), quand on réussit à la lire sans trouver que c'est de l'Hébreu, peut aider.

    lundi 4 juin 2018 12:13
  • Tout a fait.

    Concernant la StackTrace, ce qui est le plus intéressant c'est le nom des méthodes qui sont appelées, si on trouve une répétition dans cette liste ca nous donne un indice sur l'endroit du code qui peut provoquer le problème, au moins placer un breakpoint et faire du débogage pas à pas pour comprendre ce qui peut se passer.

    Cordialement,


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    lundi 4 juin 2018 15:06
  • Effectivement, c'est même un des rares cas où c'est parlant.

    Car un empilement de fonctions système, extérieures au code écrit par le développeur, ça me donne l'impression qu'il faut vraiment une solide expérience pour que ça parle.

    Sauf si on voit un nom de bibliothèque revenir fréquemment dans des rapports de bugs d'applications d'origines diverses, là on se dit tiens, dans ce coin-là, ce n'est pas net.

    lundi 4 juin 2018 15:15