Journal Gethostbyname, getenv et segmentation fault..

Posté par  .
Étiquettes : aucune
0
7
mar.
2004
Bonjour,

Alors voila j'ai un petit probleme en C bien bizarre. J'utilise la fonction gethostbyname, qui fonctionne parfaitement si elle est appellé en gros au tout debut de mon prog, mais si elle appellé apres un certain nombre de fonction, elle merde sur getenv...

----------------------------------------------------------------------------
Program received signal SIGSEGV, Segmentation fault.
*__GI_getenv (name=0x40139e28 "CALDOMAIN") at ../sysdeps/generic/getenv.c:84
84 ../sysdeps/generic/getenv.c: Aucun fichier ou répertoire de ce type.
in ../sysdeps/generic/getenv.c
(gdb) where
#0 *__GI_getenv (name=0x40139e28 "CALDOMAIN")
at ../sysdeps/generic/getenv.c:84
#1 0x400fccdd in __res_vinit (statp=0x40149360, preinit=0) at res_init.c:197
#2 0x400fcbe5 in *__GI___res_ninit (statp=0x6b636162) at res_init.c:138
#3 0x40100ae8 in *__GI___nss_hostname_digits_dots (
name=0x804c580 "www.hardware.fr", resbuf=0x401495e4, buffer=0x40147980,
buffer_size=0x401495e0, buflen=0, result=0xbffffbc4, status=0x0,
typep=0x0, flags=0, afp=0x0, h_errnop=0xbffffbc8) at ctype.h:35
#4 0x401022ad in gethostbyname (name=0x804c580 "www.hardware.fr")
at getXXbyYY.c:114
#5 0x08049cd2 in sockop (host=0x804c580 "www.hardware.fr", port=80,
uri=0x804c988 "d\202\024@d\202\024@") at socket.c:24
#6 0x08049631 in main () at main.c:29
----------------------------------------------------------------------------

J'ai eu beau chercher partout sur google, j'ai trouvé aucune explication ni rien...

Qqn a une idee pour me sauver? (Soit pour utiliser gethostbyname, soit une autre fonction)
  • # Re: Gethostbyname, getenv et segmentation fault..

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

    sans le code, c'est dur (tm)...et de toute façon, ici c'est pas un forum, c'était mieux avant (et la tribune aussi)!

    bon ok c'est nul
  • # Re: Gethostbyname, getenv et segmentation fault..

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

    je dirais que c'est le moment de sortir le valgrind, le problème doit se situer ailleurs
  • # Re: Gethostbyname, getenv et segmentation fault..

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

    KADO

    cest a peu pres ca (oui je sais mon cast est peut etre foireux mais jai pas retouvé la bonne version nikel)

    NOUBLIE PAS que la struct hostent est géré par L'OS comme un highlander et donc cest pas toi qui la possede->en gros si tu fait un 2eme gethostbyname TOUS tes pointeurs hostent pointront vers la nouvelle struct (Il ne peux en rester qu'une :) )

    sinon balance ton code quon puisse dire si ya un probleme genre ton char * host est foireux.

    // resout un nom DNS en adresse IP

    void resolve_name(char *host,char *IP){

    struct hostent *h;

    struct sockaddr_in local;

    h=gethostbyname(host);

    if (h==NULL)

    {

    strcpy(IP,host);

    return;

    }

    local.sin_addr.s_addr = *(u_long *)h->h_addr_list[0];

    strcpy(IP,inet_ntoa(local.sin_addr));
    }
  • # Re: Gethostbyname, getenv et segmentation fault..

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

    a mon avis, tu devrais arreter le C, c'est pas fait pour toi :D

    (et il y a des endroits plus mieux pour ce genre de question)

Suivre le flux des commentaires

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