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 :

role de la fonction __stack_chk_fail


Sujet :

C++

  1. #1
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut role de la fonction __stack_chk_fail
    Bonjour,

    Je compile un code avec gcc en mode static sous un linux recent (glib 2.6.1). Ce code veux pas fonctionner sur un linux plus ancien (glib 2.3.1) à cause de la fameuse glibc manquante. j'ai un message suivant "GLIBC_2_4 not found..", classique.
    Par hasard en cherchant j'ai compris qu'en fait il manquait just un lien vers la fonction "__stack_chk_fail(void)".

    j'ai donc rajouté à mon code une fonction vide avec ce nom. J'ai recompiler et là miracle tout fonctionne sur mon vieux linux (c'est clairement du bricolage, mais bon...)

    Mais à quoi sert exactement cette fonction? Je n'arrive pas à trouver sur le WEB.
    Puis-je laisser les choses dans l'état si ca fonctionne ? ou vais-je avoir des surprise ?


    Merci de votre aide

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    AMHA d'après le nom, c'est une fonction qui vérifie (chk -> check) si une allocation sur la pile(stack) a échoué (fail) ou pas. Ca va marcher tant que ton allocation n'échouera pas, et une allocation n'échoue pas souvent, mais quand ça va échouer (et ça échouera un jour), vu que ta fonction ne fera rien, ça pourra poser des problèmes.

    Donc si tu veux un système stable, sans avoir de craintes, je pense pas que ça soit judicieux de laisser ça comme ça. Maintenant je suis pas un spécialiste du fonctionnement interne de cette librairie et mon avis est donc à prendre avec des pincettes.

    @ ++

  3. #3
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Je n'ai pas saisi le risque potentiel. Veux-tu dire que le code peut se cracher ou carément le systeme?

  4. #4
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    En fait, je n'avais pas cherché et toi pas trop non plus apparement ? Ca ne détecte pas le stack overflow mais cette fonction arrête la fonction "victime" de ce stack overflow. Donc je pense que ça peut faire crasher le programme si tu ne le gères pas toi-même.

    http://refspecs.freestandards.org/LS...hk-fail-1.html

    Au lieu de faire un bidouillage comme tu as fait, la plupart des forums conseillent d'ajouter "-fno-stack-protector" à ton CFLAGS.

    trouvé sur http://forum.osdev.org/viewtopic.php?f=1&t=19434

    Enfin en bref google __stack_chk_fail et tu trouveras ton bonheur.

  5. #5
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Merci de ta recherche, mais ne vas pas croire que je ne connais pas google, j'ai déjà essayé ce flag, mais il ne resolvait pas mon probléme de compilation, c'est pourquoi j'ai essayé de créer la fonction.

  6. #6
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Dans ce cas, il est souvent intéressant de dire ce que tu as déjà testé et ce qui ne marche pas dans ton post.

    J'espère avoir au moins répondu à une de tes questions:

    Mais à quoi sert exactement cette fonction? Je n'arrive pas à trouver sur le WEB.
    Bonne chance

  7. #7
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Oui tu as raison sur ce point, merci de ton aide.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/06/2010, 15h08
  2. [Dojo] quel est le role de la fonction markupFactory() de la class dojox.grid.cells.cell.
    Par moukit233 dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 02/12/2009, 13h16
  3. Définier le search_path en fonction du role
    Par icer dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/10/2007, 18h47
  4. Utilisation de template dans un role de fonctions/procedures
    Par Punky65250 dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 01/09/2004, 10h05

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