Débordement de piles !
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Débordement de piles !



  1. #1
    inviteaf93c9db

    Débordement de piles !


    ------

    Bonjour,

    J'ai fait l'acquisition d'un logiciel de video-surveillance.
    En pemanence s'affichait une alerte "plus de ressources système"
    Une fois, après cette alerte, une autre s'est affichée "débordement de piles".
    D'après ce que j'ai lu sur internet, il semblerait que ce ne soit guère catholique, mais je n'ai guère de compétences.
    Peut-on m'expliquer ?

    P.S : Le vendeur m'a remboursé de sa propre initiative !

    -----

  2. #2
    JPL
    Responsable des forums

    Re : Débordement de piles !

    J'ai déplacé vers le forum Logiciels. Manifestement tu as acquis un logiciel très mal programmé. "Plus de ressources système" me laisserait penser que tu l'utilises sous Windows 98 ou ME, parce que ce problème n'est guère rencontré, je pense, avec XP. Ce message signifie que le programme tend à saturer un espace de mémoire particulier de Windows destiné à manipuler certains objets (par exemple des objets graphiques).
    Le débordement de pile est dû à une faute de programmation encore plus grave.
    Quelle est ta version de Windows ?
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    invite6198bcc6

    Re : Débordement de piles !

    Bonjour,
    J'ai téléchargé et utilisé il y a quelque temps un logiciel nommé Werewolf. Lors de la fermeture, il affichait parfois le message "Débordement de pile". A quelle erreur de programmation correspond ce message ?

  4. #4
    invite3d7be5ae

    Re : Débordement de piles !

    En assembleur, tu peux faire des push et des pop. L'un rajoute un mot (2 octets) l'autre l'enlève.

    Par exemple :
    au début pile vide
    puis push 1
    pile : 0,1 (octet fort,octet faible en base 10)
    push 256 (256=256*1+0)
    pile : 0,1,1,0
    push 65535 (65536=255*256+255)
    pile : 0,1,1,0,255,255
    pop
    pile : 0,1,1,0
    push 32 (32=0*256+32)
    pile : 0,1,1,0,0,32
    pop
    pile : 0,1,1,0

    etc...
    (En fait, pop prend un argument et met le résultat dans l'argument;
    autre différence : pop rajoute (La pile est à l'envers!!!) 2 à un compteur qui indique le dernier octet de la pile mais n'enlève pas le contenu (on peut le réutiliser après))

    Seulement, si on fait trop de push (et pas assez de pop), on peut dépacer la capacité du segment de pile (64 Ko).
    Et craac, on peut plus empiler, Windows le voit et donne l'avertissement.
    Quand au programme, il a besoin d'empiler. Comme il ne peut pas, il plante.
    Et ça fait aussi un segment de perdu. Car le programme (si le programmeur n'est pas bête) est fait pour autant de push que de pop. Mais là, il s'arrête en plein milieu et ne peut plus faire ses pop tranquillement. (Mais qu'est-ce 64 Ko quand on a 512 Mo voir 1 Go?)

    Rassurez-vous le segment (64Ko) n'est pas définitivement perdu : dès que l'on éteint l'ordi, tout va bien.

    Voilà, en espérant que cela ne soit pas trop compliqué.

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

    Re : Débordement de piles !

    Que JPL m'excuse pour m'être trompé de sujet !

    Je suis bien sous XP P2.
    En fait, j'ai lu que les débordements de piles sous certains programmes peuvent être des vulnérabilités, mais apparemment exploitables seulement en local.

    Ce qu'il m'importe de savoir, c'est si cette réaction à l'utilisation du logiciel (en l'occurence i-SanCam) peut être la manifestation d'une malveillance de la part du concepteur.

    Merci à Pole pour son développement, mais là je dois dire que je suis très largement dépassé !

  7. #6
    invite3d7be5ae

    Re : Débordement de piles !

    Citation Envoyé par Soleil 2B
    Merci à Pole pour son développement, mais là je dois dire que je suis très largement dépassé !
    C'est normal si tu ne programmes pas en assembleur.

    Pour résumé : le programme plante car il a besoin de faire quelque chose et il ne peut pas le faire.

    Pour la pile, tu peux l'imaginer avec une pile d'assiette avec un numéro dessus. Un push rajoute une assiette, un pop enlève une assiette (ce n'est pas tout à fait vrai, mais c'est plus simple).
    Dans ta maison (ou appartement) tu as 65536 assiettes (=64 Ko). Si tu as 70000 invités, tu as un gros problème (Et pas que de place!!!). Après avoir mis 65536 assiettes, Windows dit qu'il n'y a plus d'assiette.
    Voilà, j'espère que c'est plus simple.

    Normalement, les débordements de pile, c'est quand tu lui demande de faire trop de choses : essaye de baisser la résolution et le nombre de couleurs.

  8. #7
    JPL
    Responsable des forums

    Re : Débordement de piles !

    Je vais compléter un peu. Un programme met dans une pile (disont une sorte de file d'attente), certaines informations relatives à ses états successifs qu'il va rechercher lorsqu'il en a besoin. Sauf que contrairement à une file d'attente c'est la dernière information arrivée qui est appelée la première, comme pour la pile d'assiettes (last in, first out ou LIFO dans le jargo des programmeurs). Un programme mal conçu peut en effet tenter de mettre une information complémentaire alors que la pile est pleine, sans vérifier s'il a encore de la place.

    Les programmes malveillants exploitent plutôt un défaut un peu différent, et très fréquent, de programmes installés sur l'ordinateur : le débordement de mémoire tampon. Il s'agit d'un petit espace de mémoire destiné à stocker de manière tout à fait transitoire quelques informations (par exemple une chaîne de caractères, un groupe de données...). Contrairement à la pile la mémoire tampon se vide selon le schéma premier entré, premier sorti (first in, first out ou FIFO en programmation).

    Dans le cas présent je pense qu'il s'agit simplement d'un faute de programmation.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  9. #8
    invite3d7be5ae

    Re : Débordement de piles !

    Citation Envoyé par JPL
    Un programme mal conçu peut en effet tenter de mettre une information complémentaire alors que la pile est pleine, sans vérifier s'il a encore de la place.
    Des fois, dans des grosses boucles ou des boucles imbriqués, il vaut mieux ne pas vérifier à chaque fois si on ne veut pas que le programme mette 5h.

    Mais c'est quand même bizarre un débordement de pile, car le débordement devrait se faire au moment de la conception et donc être corrigé immédiatement.
    Le segment de pile est unique pour un prog (on peut en simuler une avec un autre segment, mais dans ce cas là, Windows ne l'appelle pas débordement de pile) et à toujours la même taille. C'est vraiment bizarre.

  10. #9
    inviteaf93c9db

    Re : Débordement de piles !

    En conclusion, le logiciel ne serait pas au point, et c'est probablement pour ça que le concepteur s'est empressé de m'en proposer le remboursement !

    Un grand merci à tous les deux, et mention pour POLE dont je viens de découvrir l'âge !

  11. #10
    inviteb865367f

    Re : Débordement de piles !

    Un debordement arrive quand une fonction recursive est mal programmée, par exemple :

    Code:
    function toto() {
      toto();
    }
    provoque un debordement de pile. En faite quand une fonction est appelé des données passe sur la pile, du coup le pseudo code si dessus empile empile .. et plante.

    Normalement toute fonction récursive à un test de sortie ...

Discussions similaires

  1. [Blanc] débordement Vedette 508T
    Par pountchu dans le forum Dépannage
    Réponses: 4
    Dernier message: 04/04/2007, 15h14
  2. débordement tmr2
    Par nicolasronan dans le forum Électronique
    Réponses: 9
    Dernier message: 24/09/2006, 18h44
  3. debordement lave linge
    Par invitee6bcc34b dans le forum Dépannage
    Réponses: 8
    Dernier message: 25/06/2006, 18h12
  4. Debordement
    Par invitef3f250c8 dans le forum Dépannage
    Réponses: 1
    Dernier message: 18/03/2006, 19h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.