Forum Programmation.c equivalent aux malloc_options

Posté par  .
Étiquettes : aucune
0
10
avr.
2009
Bonjour,
Existe-t-il sous linux un équivalent aux malloc_options de BSD.
Je cherche en effet un moyen de remplir la mémoire par des 1 afin de débusquer d'éventuels bugs.
Merci d'avance.
  • # Autre solution

    Posté par  (site web personnel) . Évalué à 1.

    Le couple malloc + memset devrai faire l'affaire.
    • [^] # Re: Autre solution

      Posté par  . Évalué à 1.

      memset est une fonction. Ca demande que je modifie mon code en mettant des memset après chaque malloc....et que je les retire après debugage... assez lourd comme solution.
      Je cherche plutôt un moyen de modifier le comportement de malloc à l'aide de variables d'environnements (par exemple), ou en tout cas, sans avoir à modifier le code.
      Merci quand même.
      D'autres solutions?
      • [^] # Re: Autre solution

        Posté par  . Évalué à 2.

        réécrire malloc :P et charger la lib avant :)
        Tu peux aussi zieuter du coté de valgrind pour voir comment ils font ;)

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

        • [^] # Re: Autre solution

          Posté par  . Évalué à 1.

          Valgring a peut-être une option qui fait ça, en effet.
          Je vais jeter un coup d'oeil, merci.
          • [^] # Re: Autre solution

            Posté par  (site web personnel) . Évalué à 1.

            ou sinon une macro qui appelle malloc et memset.
            une macro activée seulement pour le débug.

            ou sinon y'a des trucs spécifiques glibc genre __malloc_hook et/ou __malloc_initialize_hook
            (malloc.h) que j'ai jamais utilisé mais que je viens de trouver dans la doc glibc
  • # Electric Fence

    Posté par  . Évalué à 1.

    Electric Fence est une bibliotheque qui override malloc et permet de debugger.
    En gros, les zones malloc'ées sont entouré par des barrieres, et le moindre overflow provoque direct un segfault.
    Sans cette lib, un programme peut tres bien ecrire n'importe quoi n'importe ou, et le probleme survient 200 lignes de code plus tard ...

    Tres pratique
  • # LD_PRELOAD

    Posté par  . Évalué à 3.

    Tu peux intercepter les appels à malloc() dans une librairie .so que tu aurais écrit en utilisant LD_PRELOAD.

    Sinon, je ne vois pas en quoi mettre une zone de mémoire à 1 différerait de la mettre mémoire à 0.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.