Public bug reported:

/home/mcmanus/t/t>lsb_release -rd
Description:    Ubuntu 8.04.1
Release:        8.04

/home/mcmanus/t/t>apt-cache policy libc6
libc6:
  Installed: 2.7-10ubuntu3
  Candidate: 2.7-10ubuntu3
  Version table:
 *** 2.7-10ubuntu3 0
        500 http://us.archive.ubuntu.com hardy/main Packages
        100 /var/lib/dpkg/status

--

I think this is an upstream bug.

This sample program crashes due to a stack overflow on a thread spawned by 
glibc. I am not sure if that is also true on 32bit.
 (Complile as gcc poc.c -lresolv -ldl -lpthread -lanl )

#define _GNU_SOURCE
#include <netdb.h>
#include <string.h>

main()
{
    struct gaicb gb, *list[1];
    struct addrinfo hints;

    memset (&hints, 0 , sizeof (hints));
    list[0] = &gb;
    memset (&gb, 0, sizeof (gb));
    gb.ar_name = "www.ducksong.com";
    gb.ar_service = NULL;
    gb.ar_request = &hints;
    gb.ar_result = NULL;
    getaddrinfo_a (GAI_WAIT, list, 1, NULL);

    return 0;
}

In addition to the SEGV, valgrind reports
==21077==
==21077== Process terminating with default action of signal 11 (SIGSEGV)
==21077==  Bad permissions for mapped region at address 0x4023A88
==21077==    at 0x57477CC: __res_vinit (res_init.c:571)
==21077==    by 0x7FF0005FF: ???
==21077==    by 0x802BF: ???

The following patch to libc lets the program run without error and gets
valgrind a clean bill of health.

diff -ur glibc-2.7/nptl/sysdeps/pthread/gai_misc.h 
../../glibc-2.7/nptl/sysdeps/pthread/gai_misc.h
--- glibc-2.7/nptl/sysdeps/pthread/gai_misc.h   2007-07-28 15:30:21.000000000 
-0400
+++ ../../glibc-2.7/nptl/sysdeps/pthread/gai_misc.h     2008-09-09 
11:02:59.293997492 -0400
@@ -97,7 +97,7 @@
   pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);

   /* The helper thread needs only very little resources.  */
-  (void) pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN);
+  (void) pthread_attr_setstacksize (&attr, 24*1024);

   /* Block all signals in the helper thread.  To do this thoroughly we
      temporarily have to block all signals here.  */

** Affects: glibc (Ubuntu)
     Importance: Undecided
         Status: New

-- 
getaddrinfo_a stack overflow on 64bit - hardy
https://bugs.launchpad.net/bugs/268195
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to