gethostbyname_r() is aborted
Carmelo Amoroso
carmelo73 at gmail.com
Sun Mar 22 15:55:44 UTC 2009
??? wrote:
> I ran the following source code in x86(glibc) and MIPS(uClibc).
> In the x86, it has no problem.
> In the MIPS, however, my program is aborted.
> Is this a bug of gethostbyname_r() ?
> I don't know why it is aborted.
>
> In the x86, following are printed.
>
> gethostname_r() with www.yahoo.com <http://www.yahoo.com/>
> host_name : www-real.wa1.b.yahoo.com <http://www-real.wa1.b.yahoo.com>
> gethostname_r() with cache.download.bluray.dreamworks.com
> <http://cache.download.bluray.dreamworks.com>
> host_name : dreamworks.cache.bdlive.hddvd.ddsnsbu.com
> <http://dreamworks.cache.bdlive.hddvd.ddsnsbu.com>
> gethostname_r() with www.yahoo.com <http://www.yahoo.com/>
> host_name : www-real.wa1.b.yahoo.com <http://www-real.wa1.b.yahoo.com>
> I'm alive.....
> I'm alive.....
> I'm alive.....
>
> In the MIPS, following are printed.
>
> gethostname_r() with www.yahoo.com <http://www.yahoo.com/>
> host_name : www-real.wa1.b.yahoo.com <http://www-real.wa1.b.yahoo.com>
> gethostname with cache.download.bluray.dreamworks.com
> <http://cache.download.bluray.dreamworks.com>
> gethostbyname_r:: Success
> host_name : ./a.out
> gethostname with www.yahoo.com <http://www.yahoo.com/>
> Aborted
> #
>
> ==============================================
> #include <errno.h>
> #include <stdio.h>
> #include <sys/types.h>
> #include <sys/socket.h>
> #include <netinet/in.h>
> #include <netdb.h>
> #include <string.h>
> #include <stdlib.h>
> #include <ctype.h>
> #include <unistd.h>
>
> #define TRUE 1
> #define FALSE 0
> int main(int argc, char **argv)
> {
> const char* hostname = "cache.download.bluray.dreamworks.com
> <http://cache.download.bluray.dreamworks.com>";
> const char* hostname2 = "www.yahoo.com <http://www.yahoo.com/>";
> char buf[512], buf2[512];
> int ret, h_error=0, h_error2 = 0;
> struct hostent res, res2, *hp = 0, *hp2 = 0;
> printf("gethostname with %s, now.\n", hostname2);
> ret = gethostbyname_r(hostname2, &res, buf, sizeof(buf), &hp,
> &h_error);
> if(0 != ret)
> perror("gethostbyname_r:");
>
> printf("host_name : %s\n", res.h_name);
>
> usleep(1000);
> printf("gethostname_r() with %s\n", hostname);
> ret = gethostbyname_r(hostname, &res2, buf2, sizeof(buf2), &hp2,
> &h_error2);
> if(0 != ret)
> perror("gethostbyname_r:");
>
> printf("host_name : %s\n", res2.h_name);
>
> usleep(1000);
>
> printf("gethostname_r() with %s\n", hostname2);
> ret = gethostbyname_r(hostname2, &res, buf, sizeof(buf), &hp,
> &h_error);
> if(0 != ret)
> perror("gethostbyname_r:");
>
> printf("host_name : %s\n", hp->h_name);
>
> while(TRUE) {
> printf("I'm alive.....\n\n");
> usleep(1000000);
> }
> }
> --
> Don't Worry, Be Happy
>
>
Hi,
I'd suggest you to do a debug session to figure out where it is causing the abort.
Carmelo
P.S.
Please, post email in plain text, not hmtl.
> ------------------------------------------------------------------------
>
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc
More information about the uClibc
mailing list